@crowi/api-contract 2.0.0-alpha.11 → 2.0.0-alpha.12

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.
package/dist/index.js CHANGED
@@ -235,6 +235,9 @@ __export(index_exports, {
235
235
  PluginFieldSchema: () => PluginFieldSchema,
236
236
  PluginInfoSchema: () => PluginInfoSchema,
237
237
  PluginNotFoundErrorSchema: () => PluginNotFoundErrorSchema,
238
+ PluginReadinessFieldSchema: () => PluginReadinessFieldSchema,
239
+ PluginReadinessIssueSchema: () => PluginReadinessIssueSchema,
240
+ PluginReadinessResponseSchema: () => PluginReadinessResponseSchema,
238
241
  PresenceClientMessageSchema: () => PresenceClientMessageSchema,
239
242
  PresenceCommentChangedMessageSchema: () => PresenceCommentChangedMessageSchema,
240
243
  PresenceHeartbeatMessageSchema: () => PresenceHeartbeatMessageSchema,
@@ -346,6 +349,7 @@ __export(index_exports, {
346
349
  UserStatusErrorSchema: () => UserStatusErrorSchema,
347
350
  UserStatusSchema: () => UserStatusSchema,
348
351
  UserSubpagesRequestSchema: () => UserSubpagesRequestSchema,
352
+ UsernameSchema: () => UsernameSchema,
349
353
  ValidationErrorSchema: () => ValidationErrorSchema,
350
354
  WS_CLOSE_CODES: () => WS_CLOSE_CODES,
351
355
  WatchStatusResponseSchema: () => WatchStatusResponseSchema,
@@ -416,6 +420,7 @@ __export(index_exports, {
416
420
  getNotificationsTokenRoute: () => getNotificationsTokenRoute,
417
421
  getPageRoute: () => getPageRoute,
418
422
  getPluginConfigRoute: () => getPluginConfigRoute,
423
+ getPluginReadinessRoute: () => getPluginReadinessRoute,
419
424
  getPresenceTokenRoute: () => getPresenceTokenRoute,
420
425
  getProfileRoute: () => getProfileRoute,
421
426
  getRevisionRoute: () => getRevisionRoute,
@@ -517,7 +522,7 @@ __export(index_exports, {
517
522
  module.exports = __toCommonJS(index_exports);
518
523
 
519
524
  // src/client.ts
520
- var import_zod_openapi74 = require("@hono/zod-openapi");
525
+ var import_zod_openapi75 = require("@hono/zod-openapi");
521
526
  var import_client = require("hono/client");
522
527
 
523
528
  // src/contracts/admin/app.ts
@@ -1167,6 +1172,18 @@ var ClearRenderCacheResponseSchema = import_zod_openapi9.z.object({
1167
1172
  /** Number of cache rows removed. */
1168
1173
  removedCount: import_zod_openapi9.z.number().int().min(0)
1169
1174
  });
1175
+ var PluginReadinessFieldSchema = import_zod_openapi9.z.object({
1176
+ name: import_zod_openapi9.z.string(),
1177
+ configured: import_zod_openapi9.z.literal(false)
1178
+ });
1179
+ var PluginReadinessIssueSchema = import_zod_openapi9.z.object({
1180
+ name: import_zod_openapi9.z.string(),
1181
+ adminPlacement: PluginAdminPlacementSchema,
1182
+ fields: import_zod_openapi9.z.array(PluginReadinessFieldSchema)
1183
+ });
1184
+ var PluginReadinessResponseSchema = import_zod_openapi9.z.object({
1185
+ issues: import_zod_openapi9.z.array(PluginReadinessIssueSchema)
1186
+ });
1170
1187
 
1171
1188
  // src/contracts/admin/plugins.ts
1172
1189
  var PluginNameQuerySchema = import_zod_openapi10.z.object({ name: import_zod_openapi10.z.string() });
@@ -1298,6 +1315,27 @@ var clearRenderCacheAllRoute = (0, import_zod_openapi10.createRoute)({
1298
1315
  }
1299
1316
  }
1300
1317
  });
1318
+ var getPluginReadinessRoute = (0, import_zod_openapi10.createRoute)({
1319
+ method: "get",
1320
+ path: "/admin/plugins/readiness",
1321
+ tags: ["admin.plugins"],
1322
+ security: [{ bearerAuth: [] }],
1323
+ summary: "List active plugins missing required readiness config fields",
1324
+ responses: {
1325
+ 200: {
1326
+ description: "Readiness issues for active plugins (empty when everything is configured)",
1327
+ content: { "application/json": { schema: PluginReadinessResponseSchema } }
1328
+ },
1329
+ 401: {
1330
+ description: "Authentication required",
1331
+ content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
1332
+ },
1333
+ 403: {
1334
+ description: "Admin permission required",
1335
+ content: { "application/json": { schema: AdminRequiredErrorSchema } }
1336
+ }
1337
+ }
1338
+ });
1301
1339
  var clearRenderCachePluginRoute = (0, import_zod_openapi10.createRoute)({
1302
1340
  method: "post",
1303
1341
  path: "/admin/plugins/render-cache/clear-plugin",
@@ -1337,6 +1375,7 @@ var adminPluginsRoutes = {
1337
1375
  listPluginsRoute,
1338
1376
  getPluginConfigRoute,
1339
1377
  updatePluginConfigRoute,
1378
+ getPluginReadinessRoute,
1340
1379
  clearRenderCacheAllRoute,
1341
1380
  clearRenderCachePluginRoute
1342
1381
  };
@@ -3889,29 +3928,35 @@ var draftRoutes = {
3889
3928
  };
3890
3929
 
3891
3930
  // src/contracts/installer.ts
3892
- var import_zod_openapi41 = require("@hono/zod-openapi");
3931
+ var import_zod_openapi42 = require("@hono/zod-openapi");
3893
3932
 
3894
3933
  // src/schemas/installer.ts
3934
+ var import_zod_openapi41 = require("@hono/zod-openapi");
3935
+
3936
+ // src/schemas/username.ts
3895
3937
  var import_zod_openapi40 = require("@hono/zod-openapi");
3896
- var InstallerStatusResponseSchema = import_zod_openapi40.z.object({
3897
- status: import_zod_openapi40.z.enum(["installer_required", "already_installed"])
3898
- });
3899
- var CreateAdminRequestSchema = import_zod_openapi40.z.object({
3900
- registerForm: import_zod_openapi40.z.object({
3901
- username: import_zod_openapi40.z.string().min(1).regex(/^[\da-zA-Z\-_.]+$/, "username may only contain letters, digits, hyphens, underscores, and dots"),
3902
- name: import_zod_openapi40.z.string().min(1),
3903
- email: import_zod_openapi40.z.string().email(),
3904
- password: import_zod_openapi40.z.string().min(6).regex(/^[\x20-\x7F]{6,}$/, "password must be 6+ printable ASCII characters")
3938
+ var UsernameSchema = import_zod_openapi40.z.string().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/, "username may only contain letters, digits, hyphens, and underscores");
3939
+
3940
+ // src/schemas/installer.ts
3941
+ var InstallerStatusResponseSchema = import_zod_openapi41.z.object({
3942
+ status: import_zod_openapi41.z.enum(["installer_required", "already_installed"])
3943
+ });
3944
+ var CreateAdminRequestSchema = import_zod_openapi41.z.object({
3945
+ registerForm: import_zod_openapi41.z.object({
3946
+ username: UsernameSchema,
3947
+ name: import_zod_openapi41.z.string().min(1),
3948
+ email: import_zod_openapi41.z.string().email(),
3949
+ password: import_zod_openapi41.z.string().min(6).regex(/^[\x20-\x7F]{6,}$/, "password must be 6+ printable ASCII characters")
3905
3950
  })
3906
3951
  });
3907
- var CreateAdminResponseSchema = import_zod_openapi40.z.object({
3908
- status: import_zod_openapi40.z.enum(["ok", "error"]),
3909
- message: import_zod_openapi40.z.string().optional(),
3910
- errors: import_zod_openapi40.z.array(import_zod_openapi40.z.string()).optional()
3952
+ var CreateAdminResponseSchema = import_zod_openapi41.z.object({
3953
+ status: import_zod_openapi41.z.enum(["ok", "error"]),
3954
+ message: import_zod_openapi41.z.string().optional(),
3955
+ errors: import_zod_openapi41.z.array(import_zod_openapi41.z.string()).optional()
3911
3956
  });
3912
3957
 
3913
3958
  // src/contracts/installer.ts
3914
- var getInstallerStatusRoute = (0, import_zod_openapi41.createRoute)({
3959
+ var getInstallerStatusRoute = (0, import_zod_openapi42.createRoute)({
3915
3960
  method: "get",
3916
3961
  path: "/installer",
3917
3962
  tags: ["installer"],
@@ -3935,7 +3980,7 @@ var getInstallerStatusRoute = (0, import_zod_openapi41.createRoute)({
3935
3980
  }
3936
3981
  }
3937
3982
  });
3938
- var createAdminRoute = (0, import_zod_openapi41.createRoute)({
3983
+ var createAdminRoute = (0, import_zod_openapi42.createRoute)({
3939
3984
  method: "post",
3940
3985
  path: "/installer/createAdmin",
3941
3986
  tags: ["installer"],
@@ -3979,88 +4024,88 @@ var createAdminRoute = (0, import_zod_openapi41.createRoute)({
3979
4024
  var installerRoutes = { getInstallerStatusRoute, createAdminRoute };
3980
4025
 
3981
4026
  // src/contracts/me.ts
3982
- var import_zod_openapi43 = require("@hono/zod-openapi");
4027
+ var import_zod_openapi44 = require("@hono/zod-openapi");
3983
4028
 
3984
4029
  // src/schemas/me.ts
3985
- var import_zod_openapi42 = require("@hono/zod-openapi");
3986
- var LanguageSchema = import_zod_openapi42.z.enum(["en", "ja"]);
3987
- var ThemeSchema = import_zod_openapi42.z.enum(["system", "light", "dark"]);
3988
- var UserProfileResponseSchema = import_zod_openapi42.z.object({
3989
- id: import_zod_openapi42.z.string(),
3990
- username: import_zod_openapi42.z.string(),
3991
- name: import_zod_openapi42.z.string(),
3992
- email: import_zod_openapi42.z.string().email(),
4030
+ var import_zod_openapi43 = require("@hono/zod-openapi");
4031
+ var LanguageSchema = import_zod_openapi43.z.enum(["en", "ja"]);
4032
+ var ThemeSchema = import_zod_openapi43.z.enum(["system", "light", "dark"]);
4033
+ var UserProfileResponseSchema = import_zod_openapi43.z.object({
4034
+ id: import_zod_openapi43.z.string(),
4035
+ username: import_zod_openapi43.z.string(),
4036
+ name: import_zod_openapi43.z.string(),
4037
+ email: import_zod_openapi43.z.string().email(),
3993
4038
  lang: LanguageSchema,
3994
4039
  theme: ThemeSchema,
3995
- image: import_zod_openapi42.z.string().nullable(),
3996
- introduction: import_zod_openapi42.z.string().optional(),
3997
- hasPassword: import_zod_openapi42.z.boolean(),
3998
- createdAt: import_zod_openapi42.z.string(),
4040
+ image: import_zod_openapi43.z.string().nullable(),
4041
+ introduction: import_zod_openapi43.z.string().optional(),
4042
+ hasPassword: import_zod_openapi43.z.boolean(),
4043
+ createdAt: import_zod_openapi43.z.string(),
3999
4044
  /**
4000
4045
  * True when the profile update requested a new email that is awaiting
4001
4046
  * confirmation: the stored `email` is unchanged and a confirmation
4002
4047
  * link was sent to the new address.
4003
4048
  */
4004
- emailChangePending: import_zod_openapi42.z.boolean().optional()
4049
+ emailChangePending: import_zod_openapi43.z.boolean().optional()
4005
4050
  });
4006
- var UpdateProfileRequestSchema = import_zod_openapi42.z.object({
4007
- userForm: import_zod_openapi42.z.object({
4008
- name: import_zod_openapi42.z.string().min(1, "Name is required"),
4009
- email: import_zod_openapi42.z.string().email("Invalid email format"),
4051
+ var UpdateProfileRequestSchema = import_zod_openapi43.z.object({
4052
+ userForm: import_zod_openapi43.z.object({
4053
+ name: import_zod_openapi43.z.string().min(1, "Name is required"),
4054
+ email: import_zod_openapi43.z.string().email("Invalid email format"),
4010
4055
  lang: LanguageSchema
4011
4056
  })
4012
4057
  });
4013
- var UpdateThemeRequestSchema = import_zod_openapi42.z.object({
4058
+ var UpdateThemeRequestSchema = import_zod_openapi43.z.object({
4014
4059
  theme: ThemeSchema
4015
4060
  });
4016
- var ThemeUpdateResponseSchema = import_zod_openapi42.z.object({
4017
- status: import_zod_openapi42.z.literal("ok"),
4061
+ var ThemeUpdateResponseSchema = import_zod_openapi43.z.object({
4062
+ status: import_zod_openapi43.z.literal("ok"),
4018
4063
  theme: ThemeSchema
4019
4064
  });
4020
- var PictureUploadResponseSchema = import_zod_openapi42.z.object({
4021
- status: import_zod_openapi42.z.boolean(),
4022
- url: import_zod_openapi42.z.string().optional(),
4023
- message: import_zod_openapi42.z.string().optional()
4065
+ var PictureUploadResponseSchema = import_zod_openapi43.z.object({
4066
+ status: import_zod_openapi43.z.boolean(),
4067
+ url: import_zod_openapi43.z.string().optional(),
4068
+ message: import_zod_openapi43.z.string().optional()
4024
4069
  });
4025
- var SuccessResponseSchema = import_zod_openapi42.z.object({
4026
- status: import_zod_openapi42.z.literal("ok"),
4027
- message: import_zod_openapi42.z.string().optional()
4070
+ var SuccessResponseSchema = import_zod_openapi43.z.object({
4071
+ status: import_zod_openapi43.z.literal("ok"),
4072
+ message: import_zod_openapi43.z.string().optional()
4028
4073
  });
4029
- var ProfileErrorResponseSchema = import_zod_openapi42.z.object({
4030
- status: import_zod_openapi42.z.literal("error"),
4074
+ var ProfileErrorResponseSchema = import_zod_openapi43.z.object({
4075
+ status: import_zod_openapi43.z.literal("error"),
4031
4076
  /** Stable code so the web can localize the message (e.g. EMAIL_TAKEN). */
4032
- code: import_zod_openapi42.z.string().optional(),
4033
- message: import_zod_openapi42.z.string().optional(),
4034
- errors: import_zod_openapi42.z.array(import_zod_openapi42.z.string()).optional()
4077
+ code: import_zod_openapi43.z.string().optional(),
4078
+ message: import_zod_openapi43.z.string().optional(),
4079
+ errors: import_zod_openapi43.z.array(import_zod_openapi43.z.string()).optional()
4035
4080
  });
4036
4081
  var PASSWORD_REGEX = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?`~])[a-zA-Z\d!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?`~]+$/;
4037
- var UpdatePasswordRequestSchema = import_zod_openapi42.z.object({
4038
- oldPassword: import_zod_openapi42.z.string().optional(),
4039
- newPassword: import_zod_openapi42.z.string().min(8, "Password must be at least 8 characters").max(100, "Password must be at most 100 characters").regex(PASSWORD_REGEX, "Password must contain at least one letter, one digit, and one special character"),
4040
- newPasswordConfirm: import_zod_openapi42.z.string()
4082
+ var UpdatePasswordRequestSchema = import_zod_openapi43.z.object({
4083
+ oldPassword: import_zod_openapi43.z.string().optional(),
4084
+ newPassword: import_zod_openapi43.z.string().min(8, "Password must be at least 8 characters").max(100, "Password must be at most 100 characters").regex(PASSWORD_REGEX, "Password must contain at least one letter, one digit, and one special character"),
4085
+ newPasswordConfirm: import_zod_openapi43.z.string()
4041
4086
  }).refine((data) => data.newPassword === data.newPasswordConfirm, {
4042
4087
  message: "Passwords do not match",
4043
4088
  path: ["newPasswordConfirm"]
4044
4089
  });
4045
- var PasswordUpdateSuccessSchema = import_zod_openapi42.z.object({
4046
- status: import_zod_openapi42.z.literal("ok"),
4047
- message: import_zod_openapi42.z.string(),
4048
- accessToken: import_zod_openapi42.z.string(),
4049
- refreshToken: import_zod_openapi42.z.string(),
4090
+ var PasswordUpdateSuccessSchema = import_zod_openapi43.z.object({
4091
+ status: import_zod_openapi43.z.literal("ok"),
4092
+ message: import_zod_openapi43.z.string(),
4093
+ accessToken: import_zod_openapi43.z.string(),
4094
+ refreshToken: import_zod_openapi43.z.string(),
4050
4095
  /** Access-token lifetime in seconds. */
4051
- expiresIn: import_zod_openapi42.z.number()
4096
+ expiresIn: import_zod_openapi43.z.number()
4052
4097
  });
4053
- var PasswordErrorResponseSchema = import_zod_openapi42.z.object({
4054
- status: import_zod_openapi42.z.literal("error"),
4055
- message: import_zod_openapi42.z.string(),
4056
- errors: import_zod_openapi42.z.array(import_zod_openapi42.z.string()).optional()
4098
+ var PasswordErrorResponseSchema = import_zod_openapi43.z.object({
4099
+ status: import_zod_openapi43.z.literal("error"),
4100
+ message: import_zod_openapi43.z.string(),
4101
+ errors: import_zod_openapi43.z.array(import_zod_openapi43.z.string()).optional()
4057
4102
  });
4058
- var RecentlyViewedPagesResponseSchema = import_zod_openapi42.z.object({
4059
- pages: import_zod_openapi42.z.array(PageSchema)
4103
+ var RecentlyViewedPagesResponseSchema = import_zod_openapi43.z.object({
4104
+ pages: import_zod_openapi43.z.array(PageSchema)
4060
4105
  });
4061
4106
 
4062
4107
  // src/contracts/me.ts
4063
- var getProfileRoute = (0, import_zod_openapi43.createRoute)({
4108
+ var getProfileRoute = (0, import_zod_openapi44.createRoute)({
4064
4109
  method: "get",
4065
4110
  path: "/me",
4066
4111
  tags: ["me"],
@@ -4077,7 +4122,7 @@ var getProfileRoute = (0, import_zod_openapi43.createRoute)({
4077
4122
  }
4078
4123
  }
4079
4124
  });
4080
- var updateProfileRoute = (0, import_zod_openapi43.createRoute)({
4125
+ var updateProfileRoute = (0, import_zod_openapi44.createRoute)({
4081
4126
  method: "put",
4082
4127
  path: "/me",
4083
4128
  tags: ["me"],
@@ -4103,7 +4148,7 @@ var updateProfileRoute = (0, import_zod_openapi43.createRoute)({
4103
4148
  }
4104
4149
  }
4105
4150
  });
4106
- var updateThemeRoute = (0, import_zod_openapi43.createRoute)({
4151
+ var updateThemeRoute = (0, import_zod_openapi44.createRoute)({
4107
4152
  method: "patch",
4108
4153
  path: "/me/theme",
4109
4154
  tags: ["me"],
@@ -4129,7 +4174,7 @@ var updateThemeRoute = (0, import_zod_openapi43.createRoute)({
4129
4174
  }
4130
4175
  }
4131
4176
  });
4132
- var uploadPictureRoute = (0, import_zod_openapi43.createRoute)({
4177
+ var uploadPictureRoute = (0, import_zod_openapi44.createRoute)({
4133
4178
  method: "post",
4134
4179
  path: "/me/picture",
4135
4180
  tags: ["me"],
@@ -4139,8 +4184,8 @@ var uploadPictureRoute = (0, import_zod_openapi43.createRoute)({
4139
4184
  body: {
4140
4185
  content: {
4141
4186
  "multipart/form-data": {
4142
- schema: import_zod_openapi43.z.object({
4143
- file: import_zod_openapi43.z.any().optional().describe("Profile picture file")
4187
+ schema: import_zod_openapi44.z.object({
4188
+ file: import_zod_openapi44.z.any().optional().describe("Profile picture file")
4144
4189
  })
4145
4190
  }
4146
4191
  }
@@ -4161,7 +4206,7 @@ var uploadPictureRoute = (0, import_zod_openapi43.createRoute)({
4161
4206
  }
4162
4207
  }
4163
4208
  });
4164
- var deletePictureRoute = (0, import_zod_openapi43.createRoute)({
4209
+ var deletePictureRoute = (0, import_zod_openapi44.createRoute)({
4165
4210
  method: "delete",
4166
4211
  path: "/me/picture",
4167
4212
  tags: ["me"],
@@ -4182,7 +4227,7 @@ var deletePictureRoute = (0, import_zod_openapi43.createRoute)({
4182
4227
  }
4183
4228
  }
4184
4229
  });
4185
- var updatePasswordRoute = (0, import_zod_openapi43.createRoute)({
4230
+ var updatePasswordRoute = (0, import_zod_openapi44.createRoute)({
4186
4231
  method: "put",
4187
4232
  path: "/me/password",
4188
4233
  tags: ["me"],
@@ -4208,7 +4253,7 @@ var updatePasswordRoute = (0, import_zod_openapi43.createRoute)({
4208
4253
  }
4209
4254
  }
4210
4255
  });
4211
- var recentlyViewedPagesRoute = (0, import_zod_openapi43.createRoute)({
4256
+ var recentlyViewedPagesRoute = (0, import_zod_openapi44.createRoute)({
4212
4257
  method: "get",
4213
4258
  path: "/me/recently-viewed-pages",
4214
4259
  tags: ["me"],
@@ -4240,43 +4285,43 @@ var meRoutes = {
4240
4285
  };
4241
4286
 
4242
4287
  // src/contracts/access-token.ts
4243
- var import_zod_openapi45 = require("@hono/zod-openapi");
4288
+ var import_zod_openapi46 = require("@hono/zod-openapi");
4244
4289
 
4245
4290
  // src/schemas/access-token.ts
4246
- var import_zod_openapi44 = require("@hono/zod-openapi");
4247
- var AccessTokenSchema = import_zod_openapi44.z.object({
4248
- id: import_zod_openapi44.z.string(),
4249
- name: import_zod_openapi44.z.string(),
4250
- scopes: import_zod_openapi44.z.array(import_zod_openapi44.z.string()),
4291
+ var import_zod_openapi45 = require("@hono/zod-openapi");
4292
+ var AccessTokenSchema = import_zod_openapi45.z.object({
4293
+ id: import_zod_openapi45.z.string(),
4294
+ name: import_zod_openapi45.z.string(),
4295
+ scopes: import_zod_openapi45.z.array(import_zod_openapi45.z.string()),
4251
4296
  /** ISO-8601 expiry, or `null` for a non-expiring token. */
4252
- expiresAt: import_zod_openapi44.z.string().nullable(),
4297
+ expiresAt: import_zod_openapi45.z.string().nullable(),
4253
4298
  /** ISO-8601 of last successful use, or `null` if never used. */
4254
- lastUsedAt: import_zod_openapi44.z.string().nullable(),
4255
- createdAt: import_zod_openapi44.z.string()
4299
+ lastUsedAt: import_zod_openapi45.z.string().nullable(),
4300
+ createdAt: import_zod_openapi45.z.string()
4256
4301
  });
4257
- var ListAccessTokensResponseSchema = import_zod_openapi44.z.object({
4258
- accessTokens: import_zod_openapi44.z.array(AccessTokenSchema)
4302
+ var ListAccessTokensResponseSchema = import_zod_openapi45.z.object({
4303
+ accessTokens: import_zod_openapi45.z.array(AccessTokenSchema)
4259
4304
  });
4260
- var CreateAccessTokenRequestSchema = import_zod_openapi44.z.object({
4261
- name: import_zod_openapi44.z.string().min(1, "Name is required").max(200),
4262
- scopes: import_zod_openapi44.z.array(import_zod_openapi44.z.string()).min(1, "At least one scope is required"),
4263
- expiresAt: import_zod_openapi44.z.string().datetime().nullable().optional()
4305
+ var CreateAccessTokenRequestSchema = import_zod_openapi45.z.object({
4306
+ name: import_zod_openapi45.z.string().min(1, "Name is required").max(200),
4307
+ scopes: import_zod_openapi45.z.array(import_zod_openapi45.z.string()).min(1, "At least one scope is required"),
4308
+ expiresAt: import_zod_openapi45.z.string().datetime().nullable().optional()
4264
4309
  });
4265
4310
  var CreateAccessTokenResponseSchema = AccessTokenSchema.extend({
4266
- token: import_zod_openapi44.z.string()
4267
- });
4268
- var InvalidScopeErrorSchema = import_zod_openapi44.z.object({
4269
- error: import_zod_openapi44.z.object({
4270
- code: import_zod_openapi44.z.literal("INVALID_SCOPE"),
4271
- message: import_zod_openapi44.z.string(),
4272
- details: import_zod_openapi44.z.object({
4273
- invalidScopes: import_zod_openapi44.z.array(import_zod_openapi44.z.string())
4311
+ token: import_zod_openapi45.z.string()
4312
+ });
4313
+ var InvalidScopeErrorSchema = import_zod_openapi45.z.object({
4314
+ error: import_zod_openapi45.z.object({
4315
+ code: import_zod_openapi45.z.literal("INVALID_SCOPE"),
4316
+ message: import_zod_openapi45.z.string(),
4317
+ details: import_zod_openapi45.z.object({
4318
+ invalidScopes: import_zod_openapi45.z.array(import_zod_openapi45.z.string())
4274
4319
  }).optional()
4275
4320
  })
4276
4321
  });
4277
4322
 
4278
4323
  // src/contracts/access-token.ts
4279
- var listAccessTokensRoute = (0, import_zod_openapi45.createRoute)({
4324
+ var listAccessTokensRoute = (0, import_zod_openapi46.createRoute)({
4280
4325
  method: "get",
4281
4326
  path: "/me/access-tokens",
4282
4327
  tags: ["me"],
@@ -4301,7 +4346,7 @@ var listAccessTokensRoute = (0, import_zod_openapi45.createRoute)({
4301
4346
  }
4302
4347
  }
4303
4348
  });
4304
- var createAccessTokenRoute = (0, import_zod_openapi45.createRoute)({
4349
+ var createAccessTokenRoute = (0, import_zod_openapi46.createRoute)({
4305
4350
  method: "post",
4306
4351
  path: "/me/access-tokens",
4307
4352
  tags: ["me"],
@@ -4335,14 +4380,14 @@ var createAccessTokenRoute = (0, import_zod_openapi45.createRoute)({
4335
4380
  }
4336
4381
  }
4337
4382
  });
4338
- var deleteAccessTokenRoute = (0, import_zod_openapi45.createRoute)({
4383
+ var deleteAccessTokenRoute = (0, import_zod_openapi46.createRoute)({
4339
4384
  method: "delete",
4340
4385
  path: "/me/access-tokens/{id}",
4341
4386
  tags: ["me"],
4342
4387
  security: [{ bearerAuth: [] }],
4343
4388
  summary: "Revoke a personal access token",
4344
4389
  request: {
4345
- params: import_zod_openapi45.z.object({ id: import_zod_openapi45.z.string() })
4390
+ params: import_zod_openapi46.z.object({ id: import_zod_openapi46.z.string() })
4346
4391
  },
4347
4392
  responses: {
4348
4393
  200: {
@@ -4374,13 +4419,13 @@ var accessTokenRoutes = {
4374
4419
  };
4375
4420
 
4376
4421
  // src/contracts/oauth.ts
4377
- var import_zod_openapi48 = require("@hono/zod-openapi");
4422
+ var import_zod_openapi49 = require("@hono/zod-openapi");
4378
4423
 
4379
4424
  // src/schemas/oauth-endpoints.ts
4380
- var import_zod_openapi47 = require("@hono/zod-openapi");
4425
+ var import_zod_openapi48 = require("@hono/zod-openapi");
4381
4426
 
4382
4427
  // src/schemas/oauth.ts
4383
- var import_zod_openapi46 = require("@hono/zod-openapi");
4428
+ var import_zod_openapi47 = require("@hono/zod-openapi");
4384
4429
  var SCOPES = [
4385
4430
  // umbrella
4386
4431
  "read",
@@ -4448,11 +4493,11 @@ function scopeSatisfies(required, granted) {
4448
4493
  return false;
4449
4494
  }
4450
4495
  var InsufficientScopeErrorSchema = ApiErrorSchema.extend({
4451
- error: import_zod_openapi46.z.object({
4452
- code: import_zod_openapi46.z.literal("INSUFFICIENT_SCOPE"),
4453
- message: import_zod_openapi46.z.string(),
4454
- details: import_zod_openapi46.z.object({
4455
- requiredScope: import_zod_openapi46.z.string()
4496
+ error: import_zod_openapi47.z.object({
4497
+ code: import_zod_openapi47.z.literal("INSUFFICIENT_SCOPE"),
4498
+ message: import_zod_openapi47.z.string(),
4499
+ details: import_zod_openapi47.z.object({
4500
+ requiredScope: import_zod_openapi47.z.string()
4456
4501
  }).optional()
4457
4502
  })
4458
4503
  });
@@ -4471,102 +4516,102 @@ var OAUTH_ERROR_CODES = [
4471
4516
  "slow_down",
4472
4517
  "expired_token"
4473
4518
  ];
4474
- var OAuthErrorSchema = import_zod_openapi47.z.object({
4475
- error: import_zod_openapi47.z.enum(OAUTH_ERROR_CODES),
4476
- error_description: import_zod_openapi47.z.string().optional()
4477
- });
4478
- var AuthorizeRequestSchema = import_zod_openapi47.z.object({
4479
- client_id: import_zod_openapi47.z.string().min(1),
4480
- redirect_uri: import_zod_openapi47.z.string().min(1),
4481
- scope: import_zod_openapi47.z.string().min(1),
4482
- code_challenge: import_zod_openapi47.z.string().min(1),
4483
- code_challenge_method: import_zod_openapi47.z.literal("S256"),
4484
- state: import_zod_openapi47.z.string().optional()
4485
- });
4486
- var AuthorizeResponseSchema = import_zod_openapi47.z.object({
4487
- redirectUri: import_zod_openapi47.z.string()
4488
- });
4489
- var TokenRequestSchema = import_zod_openapi47.z.discriminatedUnion("grant_type", [
4490
- import_zod_openapi47.z.object({
4491
- grant_type: import_zod_openapi47.z.literal("authorization_code"),
4492
- code: import_zod_openapi47.z.string().min(1),
4493
- code_verifier: import_zod_openapi47.z.string().min(1),
4494
- redirect_uri: import_zod_openapi47.z.string().min(1),
4495
- client_id: import_zod_openapi47.z.string().min(1)
4519
+ var OAuthErrorSchema = import_zod_openapi48.z.object({
4520
+ error: import_zod_openapi48.z.enum(OAUTH_ERROR_CODES),
4521
+ error_description: import_zod_openapi48.z.string().optional()
4522
+ });
4523
+ var AuthorizeRequestSchema = import_zod_openapi48.z.object({
4524
+ client_id: import_zod_openapi48.z.string().min(1),
4525
+ redirect_uri: import_zod_openapi48.z.string().min(1),
4526
+ scope: import_zod_openapi48.z.string().min(1),
4527
+ code_challenge: import_zod_openapi48.z.string().min(1),
4528
+ code_challenge_method: import_zod_openapi48.z.literal("S256"),
4529
+ state: import_zod_openapi48.z.string().optional()
4530
+ });
4531
+ var AuthorizeResponseSchema = import_zod_openapi48.z.object({
4532
+ redirectUri: import_zod_openapi48.z.string()
4533
+ });
4534
+ var TokenRequestSchema = import_zod_openapi48.z.discriminatedUnion("grant_type", [
4535
+ import_zod_openapi48.z.object({
4536
+ grant_type: import_zod_openapi48.z.literal("authorization_code"),
4537
+ code: import_zod_openapi48.z.string().min(1),
4538
+ code_verifier: import_zod_openapi48.z.string().min(1),
4539
+ redirect_uri: import_zod_openapi48.z.string().min(1),
4540
+ client_id: import_zod_openapi48.z.string().min(1)
4496
4541
  }),
4497
- import_zod_openapi47.z.object({
4498
- grant_type: import_zod_openapi47.z.literal("refresh_token"),
4499
- refresh_token: import_zod_openapi47.z.string().min(1),
4500
- client_id: import_zod_openapi47.z.string().min(1),
4501
- scope: import_zod_openapi47.z.string().optional()
4542
+ import_zod_openapi48.z.object({
4543
+ grant_type: import_zod_openapi48.z.literal("refresh_token"),
4544
+ refresh_token: import_zod_openapi48.z.string().min(1),
4545
+ client_id: import_zod_openapi48.z.string().min(1),
4546
+ scope: import_zod_openapi48.z.string().optional()
4502
4547
  }),
4503
4548
  // RFC 8628 §3.4 — device authorization grant. The client polls with the
4504
4549
  // opaque `device_code` returned by `/oauth/device/authorize`.
4505
- import_zod_openapi47.z.object({
4506
- grant_type: import_zod_openapi47.z.literal("urn:ietf:params:oauth:grant-type:device_code"),
4507
- device_code: import_zod_openapi47.z.string().min(1),
4508
- client_id: import_zod_openapi47.z.string().min(1)
4550
+ import_zod_openapi48.z.object({
4551
+ grant_type: import_zod_openapi48.z.literal("urn:ietf:params:oauth:grant-type:device_code"),
4552
+ device_code: import_zod_openapi48.z.string().min(1),
4553
+ client_id: import_zod_openapi48.z.string().min(1)
4509
4554
  })
4510
4555
  ]);
4511
4556
  var DEVICE_CODE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
4512
- var TokenResponseSchema = import_zod_openapi47.z.object({
4513
- access_token: import_zod_openapi47.z.string(),
4514
- token_type: import_zod_openapi47.z.literal("Bearer"),
4515
- expires_in: import_zod_openapi47.z.number(),
4516
- refresh_token: import_zod_openapi47.z.string(),
4517
- scope: import_zod_openapi47.z.string()
4518
- });
4519
- var RevokeRequestSchema = import_zod_openapi47.z.object({
4520
- token: import_zod_openapi47.z.string().min(1),
4521
- token_type_hint: import_zod_openapi47.z.string().optional()
4522
- });
4523
- var RevokeResponseSchema = import_zod_openapi47.z.object({});
4524
- var DeviceAuthorizeRequestSchema = import_zod_openapi47.z.object({
4525
- client_id: import_zod_openapi47.z.string().min(1),
4526
- scope: import_zod_openapi47.z.string().min(1)
4527
- });
4528
- var DeviceAuthorizeResponseSchema = import_zod_openapi47.z.object({
4529
- device_code: import_zod_openapi47.z.string(),
4530
- user_code: import_zod_openapi47.z.string(),
4531
- verification_uri: import_zod_openapi47.z.string(),
4532
- verification_uri_complete: import_zod_openapi47.z.string(),
4533
- expires_in: import_zod_openapi47.z.number(),
4534
- interval: import_zod_openapi47.z.number()
4535
- });
4536
- var DeviceVerifyRequestSchema = import_zod_openapi47.z.object({
4537
- user_code: import_zod_openapi47.z.string().min(1),
4538
- action: import_zod_openapi47.z.enum(["approve", "deny"])
4539
- });
4540
- var DeviceVerifyResponseSchema = import_zod_openapi47.z.object({
4541
- status: import_zod_openapi47.z.enum(["approved", "denied"])
4542
- });
4543
- var DeviceInfoResponseSchema = import_zod_openapi47.z.object({
4544
- client_id: import_zod_openapi47.z.string(),
4545
- scopes: import_zod_openapi47.z.array(import_zod_openapi47.z.string())
4546
- });
4547
- var ClientInfoResponseSchema = import_zod_openapi47.z.object({
4548
- clientId: import_zod_openapi47.z.string(),
4549
- name: import_zod_openapi47.z.string(),
4550
- firstParty: import_zod_openapi47.z.boolean(),
4551
- trusted: import_zod_openapi47.z.boolean()
4557
+ var TokenResponseSchema = import_zod_openapi48.z.object({
4558
+ access_token: import_zod_openapi48.z.string(),
4559
+ token_type: import_zod_openapi48.z.literal("Bearer"),
4560
+ expires_in: import_zod_openapi48.z.number(),
4561
+ refresh_token: import_zod_openapi48.z.string(),
4562
+ scope: import_zod_openapi48.z.string()
4563
+ });
4564
+ var RevokeRequestSchema = import_zod_openapi48.z.object({
4565
+ token: import_zod_openapi48.z.string().min(1),
4566
+ token_type_hint: import_zod_openapi48.z.string().optional()
4567
+ });
4568
+ var RevokeResponseSchema = import_zod_openapi48.z.object({});
4569
+ var DeviceAuthorizeRequestSchema = import_zod_openapi48.z.object({
4570
+ client_id: import_zod_openapi48.z.string().min(1),
4571
+ scope: import_zod_openapi48.z.string().min(1)
4572
+ });
4573
+ var DeviceAuthorizeResponseSchema = import_zod_openapi48.z.object({
4574
+ device_code: import_zod_openapi48.z.string(),
4575
+ user_code: import_zod_openapi48.z.string(),
4576
+ verification_uri: import_zod_openapi48.z.string(),
4577
+ verification_uri_complete: import_zod_openapi48.z.string(),
4578
+ expires_in: import_zod_openapi48.z.number(),
4579
+ interval: import_zod_openapi48.z.number()
4580
+ });
4581
+ var DeviceVerifyRequestSchema = import_zod_openapi48.z.object({
4582
+ user_code: import_zod_openapi48.z.string().min(1),
4583
+ action: import_zod_openapi48.z.enum(["approve", "deny"])
4584
+ });
4585
+ var DeviceVerifyResponseSchema = import_zod_openapi48.z.object({
4586
+ status: import_zod_openapi48.z.enum(["approved", "denied"])
4587
+ });
4588
+ var DeviceInfoResponseSchema = import_zod_openapi48.z.object({
4589
+ client_id: import_zod_openapi48.z.string(),
4590
+ scopes: import_zod_openapi48.z.array(import_zod_openapi48.z.string())
4591
+ });
4592
+ var ClientInfoResponseSchema = import_zod_openapi48.z.object({
4593
+ clientId: import_zod_openapi48.z.string(),
4594
+ name: import_zod_openapi48.z.string(),
4595
+ firstParty: import_zod_openapi48.z.boolean(),
4596
+ trusted: import_zod_openapi48.z.boolean()
4552
4597
  });
4553
4598
  var GRANT_TYPES_SUPPORTED = ["authorization_code", "refresh_token", DEVICE_CODE_GRANT_TYPE];
4554
- var DiscoveryResponseSchema = import_zod_openapi47.z.object({
4555
- issuer: import_zod_openapi47.z.string(),
4556
- authorization_endpoint: import_zod_openapi47.z.string(),
4557
- token_endpoint: import_zod_openapi47.z.string(),
4558
- revocation_endpoint: import_zod_openapi47.z.string(),
4559
- device_authorization_endpoint: import_zod_openapi47.z.string().optional(),
4560
- scopes_supported: import_zod_openapi47.z.array(import_zod_openapi47.z.string()),
4561
- response_types_supported: import_zod_openapi47.z.array(import_zod_openapi47.z.string()),
4562
- grant_types_supported: import_zod_openapi47.z.array(import_zod_openapi47.z.string()),
4563
- code_challenge_methods_supported: import_zod_openapi47.z.array(import_zod_openapi47.z.string()),
4564
- token_endpoint_auth_methods_supported: import_zod_openapi47.z.array(import_zod_openapi47.z.string())
4599
+ var DiscoveryResponseSchema = import_zod_openapi48.z.object({
4600
+ issuer: import_zod_openapi48.z.string(),
4601
+ authorization_endpoint: import_zod_openapi48.z.string(),
4602
+ token_endpoint: import_zod_openapi48.z.string(),
4603
+ revocation_endpoint: import_zod_openapi48.z.string(),
4604
+ device_authorization_endpoint: import_zod_openapi48.z.string().optional(),
4605
+ scopes_supported: import_zod_openapi48.z.array(import_zod_openapi48.z.string()),
4606
+ response_types_supported: import_zod_openapi48.z.array(import_zod_openapi48.z.string()),
4607
+ grant_types_supported: import_zod_openapi48.z.array(import_zod_openapi48.z.string()),
4608
+ code_challenge_methods_supported: import_zod_openapi48.z.array(import_zod_openapi48.z.string()),
4609
+ token_endpoint_auth_methods_supported: import_zod_openapi48.z.array(import_zod_openapi48.z.string())
4565
4610
  });
4566
4611
  var DISCOVERY_SCOPES_SUPPORTED = ISSUABLE_SCOPES;
4567
4612
 
4568
4613
  // src/contracts/oauth.ts
4569
- var authorizeRoute = (0, import_zod_openapi48.createRoute)({
4614
+ var authorizeRoute = (0, import_zod_openapi49.createRoute)({
4570
4615
  method: "post",
4571
4616
  path: "/oauth/authorize",
4572
4617
  tags: ["oauth"],
@@ -4596,7 +4641,7 @@ var authorizeRoute = (0, import_zod_openapi48.createRoute)({
4596
4641
  }
4597
4642
  }
4598
4643
  });
4599
- var tokenRoute = (0, import_zod_openapi48.createRoute)({
4644
+ var tokenRoute = (0, import_zod_openapi49.createRoute)({
4600
4645
  method: "post",
4601
4646
  path: "/oauth/token",
4602
4647
  tags: ["oauth"],
@@ -4628,7 +4673,7 @@ var tokenRoute = (0, import_zod_openapi48.createRoute)({
4628
4673
  }
4629
4674
  }
4630
4675
  });
4631
- var revokeRoute = (0, import_zod_openapi48.createRoute)({
4676
+ var revokeRoute = (0, import_zod_openapi49.createRoute)({
4632
4677
  method: "post",
4633
4678
  path: "/oauth/revoke",
4634
4679
  tags: ["oauth"],
@@ -4648,7 +4693,7 @@ var revokeRoute = (0, import_zod_openapi48.createRoute)({
4648
4693
  }
4649
4694
  }
4650
4695
  });
4651
- var discoveryRoute = (0, import_zod_openapi48.createRoute)({
4696
+ var discoveryRoute = (0, import_zod_openapi49.createRoute)({
4652
4697
  method: "get",
4653
4698
  path: "/.well-known/oauth-authorization-server",
4654
4699
  tags: ["oauth"],
@@ -4660,7 +4705,7 @@ var discoveryRoute = (0, import_zod_openapi48.createRoute)({
4660
4705
  }
4661
4706
  }
4662
4707
  });
4663
- var deviceAuthorizeRoute = (0, import_zod_openapi48.createRoute)({
4708
+ var deviceAuthorizeRoute = (0, import_zod_openapi49.createRoute)({
4664
4709
  method: "post",
4665
4710
  path: "/oauth/device/authorize",
4666
4711
  tags: ["oauth"],
@@ -4688,7 +4733,7 @@ var deviceAuthorizeRoute = (0, import_zod_openapi48.createRoute)({
4688
4733
  }
4689
4734
  }
4690
4735
  });
4691
- var deviceInfoRoute = (0, import_zod_openapi48.createRoute)({
4736
+ var deviceInfoRoute = (0, import_zod_openapi49.createRoute)({
4692
4737
  method: "get",
4693
4738
  path: "/oauth/device",
4694
4739
  tags: ["oauth"],
@@ -4697,7 +4742,7 @@ var deviceInfoRoute = (0, import_zod_openapi48.createRoute)({
4697
4742
  // scopes so the web consent screen can show them before approval. Reveals
4698
4743
  // no secret. Unknown / expired / non-pending → 404 (PHASE4-Q9 option A).
4699
4744
  request: {
4700
- query: import_zod_openapi48.z.object({ user_code: import_zod_openapi48.z.string().min(1) })
4745
+ query: import_zod_openapi49.z.object({ user_code: import_zod_openapi49.z.string().min(1) })
4701
4746
  },
4702
4747
  responses: {
4703
4748
  200: {
@@ -4710,7 +4755,7 @@ var deviceInfoRoute = (0, import_zod_openapi48.createRoute)({
4710
4755
  }
4711
4756
  }
4712
4757
  });
4713
- var deviceVerifyRoute = (0, import_zod_openapi48.createRoute)({
4758
+ var deviceVerifyRoute = (0, import_zod_openapi49.createRoute)({
4714
4759
  method: "post",
4715
4760
  path: "/oauth/device/verify",
4716
4761
  tags: ["oauth"],
@@ -4740,7 +4785,7 @@ var deviceVerifyRoute = (0, import_zod_openapi48.createRoute)({
4740
4785
  }
4741
4786
  }
4742
4787
  });
4743
- var clientInfoRoute = (0, import_zod_openapi48.createRoute)({
4788
+ var clientInfoRoute = (0, import_zod_openapi49.createRoute)({
4744
4789
  method: "get",
4745
4790
  path: "/oauth/client-info",
4746
4791
  tags: ["oauth"],
@@ -4751,7 +4796,7 @@ var clientInfoRoute = (0, import_zod_openapi48.createRoute)({
4751
4796
  // no redirectUris/allowedScopes — mirroring deviceInfoRoute's own
4752
4797
  // non-secret-lookup shape. Unknown client_id → 404.
4753
4798
  request: {
4754
- query: import_zod_openapi48.z.object({ client_id: import_zod_openapi48.z.string().min(1) })
4799
+ query: import_zod_openapi49.z.object({ client_id: import_zod_openapi49.z.string().min(1) })
4755
4800
  },
4756
4801
  responses: {
4757
4802
  200: {
@@ -4776,24 +4821,24 @@ var oauthRoutes = {
4776
4821
  };
4777
4822
 
4778
4823
  // src/contracts/notification.ts
4779
- var import_zod_openapi50 = require("@hono/zod-openapi");
4824
+ var import_zod_openapi51 = require("@hono/zod-openapi");
4780
4825
 
4781
4826
  // src/schemas/notification.ts
4782
- var import_zod_openapi49 = require("@hono/zod-openapi");
4783
- var NotificationStatusSchema = import_zod_openapi49.z.enum(["UNREAD", "UNOPENED", "OPENED"]);
4827
+ var import_zod_openapi50 = require("@hono/zod-openapi");
4828
+ var NotificationStatusSchema = import_zod_openapi50.z.enum(["UNREAD", "UNOPENED", "OPENED"]);
4784
4829
  var NotificationStatusEnum = {
4785
4830
  UNREAD: "UNREAD",
4786
4831
  UNOPENED: "UNOPENED",
4787
4832
  OPENED: "OPENED"
4788
4833
  };
4789
- var NotificationActionSchema = import_zod_openapi49.z.enum(["COMMENT", "LIKE", "MENTION", "UPDATE"]);
4834
+ var NotificationActionSchema = import_zod_openapi50.z.enum(["COMMENT", "LIKE", "MENTION", "UPDATE"]);
4790
4835
  var NotificationActionEnum = {
4791
4836
  COMMENT: "COMMENT",
4792
4837
  LIKE: "LIKE",
4793
4838
  MENTION: "MENTION",
4794
4839
  UPDATE: "UPDATE"
4795
4840
  };
4796
- var NotificationTargetModelSchema = import_zod_openapi49.z.enum(["Page"]);
4841
+ var NotificationTargetModelSchema = import_zod_openapi50.z.enum(["Page"]);
4797
4842
  var NotificationTargetModelEnum = {
4798
4843
  PAGE: "Page"
4799
4844
  };
@@ -4802,71 +4847,71 @@ var PageRefSchema = PageSchema.pick({
4802
4847
  path: true,
4803
4848
  status: true
4804
4849
  });
4805
- var NotificationSchema = import_zod_openapi49.z.object({
4806
- _id: import_zod_openapi49.z.string(),
4807
- user: import_zod_openapi49.z.string(),
4850
+ var NotificationSchema = import_zod_openapi50.z.object({
4851
+ _id: import_zod_openapi50.z.string(),
4852
+ user: import_zod_openapi50.z.string(),
4808
4853
  targetModel: NotificationTargetModelSchema,
4809
4854
  target: PageRefSchema,
4810
4855
  action: NotificationActionSchema,
4811
4856
  status: NotificationStatusSchema,
4812
- actionUsers: import_zod_openapi49.z.array(UserPublicSchema),
4813
- createdAt: import_zod_openapi49.z.string()
4857
+ actionUsers: import_zod_openapi50.z.array(UserPublicSchema),
4858
+ createdAt: import_zod_openapi50.z.string()
4814
4859
  });
4815
- var ListNotificationsRequestSchema = import_zod_openapi49.z.object({
4816
- limit: import_zod_openapi49.z.coerce.number().optional().default(10),
4817
- offset: import_zod_openapi49.z.coerce.number().optional().default(0)
4860
+ var ListNotificationsRequestSchema = import_zod_openapi50.z.object({
4861
+ limit: import_zod_openapi50.z.coerce.number().optional().default(10),
4862
+ offset: import_zod_openapi50.z.coerce.number().optional().default(0)
4818
4863
  });
4819
- var ListNotificationsResponseSchema = import_zod_openapi49.z.object({
4820
- notifications: import_zod_openapi49.z.array(NotificationSchema),
4864
+ var ListNotificationsResponseSchema = import_zod_openapi50.z.object({
4865
+ notifications: import_zod_openapi50.z.array(NotificationSchema),
4821
4866
  pager: PagerSchema
4822
4867
  });
4823
- var MarkAllAsReadResponseSchema = import_zod_openapi49.z.object({
4824
- ok: import_zod_openapi49.z.literal(true)
4868
+ var MarkAllAsReadResponseSchema = import_zod_openapi50.z.object({
4869
+ ok: import_zod_openapi50.z.literal(true)
4825
4870
  });
4826
- var OpenNotificationParamSchema = import_zod_openapi49.z.object({
4827
- id: import_zod_openapi49.z.string()
4871
+ var OpenNotificationParamSchema = import_zod_openapi50.z.object({
4872
+ id: import_zod_openapi50.z.string()
4828
4873
  });
4829
- var OpenNotificationResponseSchema = import_zod_openapi49.z.object({
4874
+ var OpenNotificationResponseSchema = import_zod_openapi50.z.object({
4830
4875
  notification: NotificationSchema
4831
4876
  });
4832
- var NotificationStatusResponseSchema = import_zod_openapi49.z.object({
4833
- count: import_zod_openapi49.z.number()
4877
+ var NotificationStatusResponseSchema = import_zod_openapi50.z.object({
4878
+ count: import_zod_openapi50.z.number()
4834
4879
  });
4835
- var NotificationNotFoundErrorSchema = import_zod_openapi49.z.object({
4836
- error: import_zod_openapi49.z.object({
4837
- code: import_zod_openapi49.z.literal("NOTIFICATION_NOT_FOUND"),
4838
- message: import_zod_openapi49.z.literal("Notification not found")
4880
+ var NotificationNotFoundErrorSchema = import_zod_openapi50.z.object({
4881
+ error: import_zod_openapi50.z.object({
4882
+ code: import_zod_openapi50.z.literal("NOTIFICATION_NOT_FOUND"),
4883
+ message: import_zod_openapi50.z.literal("Notification not found")
4839
4884
  })
4840
4885
  });
4841
- var NotificationsTokenResponseSchema = import_zod_openapi49.z.object({
4842
- token: import_zod_openapi49.z.string(),
4843
- selfUserId: import_zod_openapi49.z.string(),
4844
- expiresAt: import_zod_openapi49.z.string()
4886
+ var NotificationsTokenResponseSchema = import_zod_openapi50.z.object({
4887
+ token: import_zod_openapi50.z.string(),
4888
+ selfUserId: import_zod_openapi50.z.string(),
4889
+ expiresAt: import_zod_openapi50.z.string()
4845
4890
  });
4846
- var NotificationsTokenPayloadSchema = import_zod_openapi49.z.object({
4847
- selfUserId: import_zod_openapi49.z.string(),
4891
+ var NotificationsTokenPayloadSchema = import_zod_openapi50.z.object({
4892
+ selfUserId: import_zod_openapi50.z.string(),
4848
4893
  // Random UUID mixed into every signed token so two tokens minted
4849
4894
  // within the same second still produce byte-different JWT strings.
4850
4895
  // The browser uses the token as a React effect dependency to drive
4851
4896
  // the WebSocket reconnect — without `jti`, the iat/exp pair is
4852
4897
  // identical at second granularity and the dep stays stable.
4853
- jti: import_zod_openapi49.z.string().uuid(),
4854
- iat: import_zod_openapi49.z.number().int(),
4855
- exp: import_zod_openapi49.z.number().int()
4898
+ jti: import_zod_openapi50.z.string().uuid(),
4899
+ iat: import_zod_openapi50.z.number().int(),
4900
+ exp: import_zod_openapi50.z.number().int()
4856
4901
  });
4857
- var NotificationsChangedMessageSchema = import_zod_openapi49.z.object({
4858
- type: import_zod_openapi49.z.literal("changed")
4902
+ var NotificationsChangedMessageSchema = import_zod_openapi50.z.object({
4903
+ type: import_zod_openapi50.z.literal("changed")
4859
4904
  });
4860
4905
  var NotificationsServerMessageSchema = NotificationsChangedMessageSchema;
4861
4906
 
4862
4907
  // src/contracts/notification.ts
4863
- var NotificationInvalidRequestErrorSchema = import_zod_openapi50.z.object({
4864
- error: import_zod_openapi50.z.object({
4865
- code: import_zod_openapi50.z.literal("INVALID_REQUEST"),
4866
- message: import_zod_openapi50.z.string()
4908
+ var NotificationInvalidRequestErrorSchema = import_zod_openapi51.z.object({
4909
+ error: import_zod_openapi51.z.object({
4910
+ code: import_zod_openapi51.z.literal("INVALID_REQUEST"),
4911
+ message: import_zod_openapi51.z.string()
4867
4912
  })
4868
4913
  });
4869
- var listNotificationsRoute = (0, import_zod_openapi50.createRoute)({
4914
+ var listNotificationsRoute = (0, import_zod_openapi51.createRoute)({
4870
4915
  method: "get",
4871
4916
  path: "/notifications",
4872
4917
  tags: ["notification"],
@@ -4890,7 +4935,7 @@ var listNotificationsRoute = (0, import_zod_openapi50.createRoute)({
4890
4935
  }
4891
4936
  }
4892
4937
  });
4893
- var markAllAsReadRoute = (0, import_zod_openapi50.createRoute)({
4938
+ var markAllAsReadRoute = (0, import_zod_openapi51.createRoute)({
4894
4939
  method: "post",
4895
4940
  path: "/notifications/read",
4896
4941
  tags: ["notification"],
@@ -4911,7 +4956,7 @@ var markAllAsReadRoute = (0, import_zod_openapi50.createRoute)({
4911
4956
  }
4912
4957
  }
4913
4958
  });
4914
- var getUnreadCountRoute = (0, import_zod_openapi50.createRoute)({
4959
+ var getUnreadCountRoute = (0, import_zod_openapi51.createRoute)({
4915
4960
  method: "get",
4916
4961
  path: "/notifications/status",
4917
4962
  tags: ["notification"],
@@ -4932,7 +4977,7 @@ var getUnreadCountRoute = (0, import_zod_openapi50.createRoute)({
4932
4977
  }
4933
4978
  }
4934
4979
  });
4935
- var openNotificationRoute = (0, import_zod_openapi50.createRoute)({
4980
+ var openNotificationRoute = (0, import_zod_openapi51.createRoute)({
4936
4981
  method: "post",
4937
4982
  path: "/notifications/{id}/open",
4938
4983
  tags: ["notification"],
@@ -4964,7 +5009,7 @@ var openNotificationRoute = (0, import_zod_openapi50.createRoute)({
4964
5009
  }
4965
5010
  }
4966
5011
  });
4967
- var getNotificationsTokenRoute = (0, import_zod_openapi50.createRoute)({
5012
+ var getNotificationsTokenRoute = (0, import_zod_openapi51.createRoute)({
4968
5013
  method: "get",
4969
5014
  path: "/notifications/token",
4970
5015
  tags: ["notification"],
@@ -4999,11 +5044,11 @@ var notificationRoutes = {
4999
5044
  };
5000
5045
 
5001
5046
  // src/contracts/page-collab.ts
5002
- var import_zod_openapi51 = require("@hono/zod-openapi");
5003
- var PageIdPathParamsSchema2 = import_zod_openapi51.z.object({
5004
- id: import_zod_openapi51.z.string().openapi({ description: "Page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
5047
+ var import_zod_openapi52 = require("@hono/zod-openapi");
5048
+ var PageIdPathParamsSchema2 = import_zod_openapi52.z.object({
5049
+ id: import_zod_openapi52.z.string().openapi({ description: "Page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
5005
5050
  });
5006
- var getYjsTokenRoute = (0, import_zod_openapi51.createRoute)({
5051
+ var getYjsTokenRoute = (0, import_zod_openapi52.createRoute)({
5007
5052
  method: "get",
5008
5053
  path: "/pages/{id}/yjs-token",
5009
5054
  tags: ["page-collab"],
@@ -5040,26 +5085,26 @@ var pageCollabRoutes = {
5040
5085
  };
5041
5086
 
5042
5087
  // src/contracts/page.ts
5043
- var import_zod_openapi52 = require("@hono/zod-openapi");
5044
- var PageBadRequestErrorSchema = import_zod_openapi52.z.object({
5045
- error: import_zod_openapi52.z.object({
5046
- code: import_zod_openapi52.z.string(),
5047
- message: import_zod_openapi52.z.string()
5088
+ var import_zod_openapi53 = require("@hono/zod-openapi");
5089
+ var PageBadRequestErrorSchema = import_zod_openapi53.z.object({
5090
+ error: import_zod_openapi53.z.object({
5091
+ code: import_zod_openapi53.z.string(),
5092
+ message: import_zod_openapi53.z.string()
5048
5093
  })
5049
5094
  });
5050
- var DeletePageRequestSchema = import_zod_openapi52.z.object({
5051
- page_id: import_zod_openapi52.z.string(),
5052
- revision_id: import_zod_openapi52.z.string().optional(),
5053
- completely: import_zod_openapi52.z.boolean().optional()
5095
+ var DeletePageRequestSchema = import_zod_openapi53.z.object({
5096
+ page_id: import_zod_openapi53.z.string(),
5097
+ revision_id: import_zod_openapi53.z.string().optional(),
5098
+ completely: import_zod_openapi53.z.boolean().optional()
5054
5099
  });
5055
- var RevertDeletedPageRequestSchema = import_zod_openapi52.z.object({
5056
- page_id: import_zod_openapi52.z.string()
5100
+ var RevertDeletedPageRequestSchema = import_zod_openapi53.z.object({
5101
+ page_id: import_zod_openapi53.z.string()
5057
5102
  });
5058
- var PageIdBodySchema = import_zod_openapi52.z.object({
5059
- page_id: import_zod_openapi52.z.string()
5103
+ var PageIdBodySchema = import_zod_openapi53.z.object({
5104
+ page_id: import_zod_openapi53.z.string()
5060
5105
  });
5061
- var PageResponseSchema = import_zod_openapi52.z.object({ page: PageSchema });
5062
- var getPageRoute = (0, import_zod_openapi52.createRoute)({
5106
+ var PageResponseSchema = import_zod_openapi53.z.object({ page: PageSchema });
5107
+ var getPageRoute = (0, import_zod_openapi53.createRoute)({
5063
5108
  method: "get",
5064
5109
  path: "/pages",
5065
5110
  tags: ["page"],
@@ -5096,7 +5141,7 @@ var getPageRoute = (0, import_zod_openapi52.createRoute)({
5096
5141
  }
5097
5142
  }
5098
5143
  });
5099
- var listPagesRoute = (0, import_zod_openapi52.createRoute)({
5144
+ var listPagesRoute = (0, import_zod_openapi53.createRoute)({
5100
5145
  method: "get",
5101
5146
  path: "/pages/list",
5102
5147
  tags: ["page"],
@@ -5116,7 +5161,7 @@ var listPagesRoute = (0, import_zod_openapi52.createRoute)({
5116
5161
  }
5117
5162
  }
5118
5163
  });
5119
- var listPageChildrenRoute = (0, import_zod_openapi52.createRoute)({
5164
+ var listPageChildrenRoute = (0, import_zod_openapi53.createRoute)({
5120
5165
  method: "get",
5121
5166
  path: "/pages/children",
5122
5167
  tags: ["page"],
@@ -5136,7 +5181,7 @@ var listPageChildrenRoute = (0, import_zod_openapi52.createRoute)({
5136
5181
  }
5137
5182
  }
5138
5183
  });
5139
- var createPageRoute = (0, import_zod_openapi52.createRoute)({
5184
+ var createPageRoute = (0, import_zod_openapi53.createRoute)({
5140
5185
  method: "post",
5141
5186
  path: "/pages",
5142
5187
  tags: ["page"],
@@ -5162,7 +5207,7 @@ var createPageRoute = (0, import_zod_openapi52.createRoute)({
5162
5207
  }
5163
5208
  }
5164
5209
  });
5165
- var updatePageRoute = (0, import_zod_openapi52.createRoute)({
5210
+ var updatePageRoute = (0, import_zod_openapi53.createRoute)({
5166
5211
  method: "put",
5167
5212
  path: "/pages",
5168
5213
  tags: ["page"],
@@ -5196,7 +5241,7 @@ var updatePageRoute = (0, import_zod_openapi52.createRoute)({
5196
5241
  }
5197
5242
  }
5198
5243
  });
5199
- var setPageGrantRoute = (0, import_zod_openapi52.createRoute)({
5244
+ var setPageGrantRoute = (0, import_zod_openapi53.createRoute)({
5200
5245
  method: "put",
5201
5246
  path: "/pages/grant",
5202
5247
  tags: ["page"],
@@ -5226,7 +5271,7 @@ var setPageGrantRoute = (0, import_zod_openapi52.createRoute)({
5226
5271
  }
5227
5272
  }
5228
5273
  });
5229
- var seenPageRoute = (0, import_zod_openapi52.createRoute)({
5274
+ var seenPageRoute = (0, import_zod_openapi53.createRoute)({
5230
5275
  method: "post",
5231
5276
  path: "/pages/seen",
5232
5277
  tags: ["page"],
@@ -5256,7 +5301,7 @@ var seenPageRoute = (0, import_zod_openapi52.createRoute)({
5256
5301
  }
5257
5302
  }
5258
5303
  });
5259
- var getSeenUsersRoute = (0, import_zod_openapi52.createRoute)({
5304
+ var getSeenUsersRoute = (0, import_zod_openapi53.createRoute)({
5260
5305
  method: "get",
5261
5306
  path: "/pages/seen-users",
5262
5307
  tags: ["page"],
@@ -5284,7 +5329,7 @@ var getSeenUsersRoute = (0, import_zod_openapi52.createRoute)({
5284
5329
  }
5285
5330
  }
5286
5331
  });
5287
- var likePageRoute = (0, import_zod_openapi52.createRoute)({
5332
+ var likePageRoute = (0, import_zod_openapi53.createRoute)({
5288
5333
  method: "post",
5289
5334
  path: "/pages/like",
5290
5335
  tags: ["page"],
@@ -5314,7 +5359,7 @@ var likePageRoute = (0, import_zod_openapi52.createRoute)({
5314
5359
  }
5315
5360
  }
5316
5361
  });
5317
- var unlikePageRoute = (0, import_zod_openapi52.createRoute)({
5362
+ var unlikePageRoute = (0, import_zod_openapi53.createRoute)({
5318
5363
  method: "post",
5319
5364
  path: "/pages/unlike",
5320
5365
  tags: ["page"],
@@ -5344,7 +5389,7 @@ var unlikePageRoute = (0, import_zod_openapi52.createRoute)({
5344
5389
  }
5345
5390
  }
5346
5391
  });
5347
- var claimPageLinkAccessRoute = (0, import_zod_openapi52.createRoute)({
5392
+ var claimPageLinkAccessRoute = (0, import_zod_openapi53.createRoute)({
5348
5393
  method: "post",
5349
5394
  path: "/pages/link-access",
5350
5395
  tags: ["page"],
@@ -5372,7 +5417,7 @@ var claimPageLinkAccessRoute = (0, import_zod_openapi52.createRoute)({
5372
5417
  description: "The caller has no access to the page (isGrantedFor is false) or lacks scope / is a non-web session \u2014 403 is about the caller lacking access, never about the page grant type per se",
5373
5418
  content: {
5374
5419
  "application/json": {
5375
- schema: import_zod_openapi52.z.union([PageNotGrantedErrorSchema, InsufficientScopeErrorSchema])
5420
+ schema: import_zod_openapi53.z.union([PageNotGrantedErrorSchema, InsufficientScopeErrorSchema])
5376
5421
  }
5377
5422
  }
5378
5423
  },
@@ -5390,7 +5435,7 @@ var claimPageLinkAccessRoute = (0, import_zod_openapi52.createRoute)({
5390
5435
  }
5391
5436
  }
5392
5437
  });
5393
- var getWatchStatusRoute = (0, import_zod_openapi52.createRoute)({
5438
+ var getWatchStatusRoute = (0, import_zod_openapi53.createRoute)({
5394
5439
  method: "get",
5395
5440
  path: "/pages/watch",
5396
5441
  tags: ["page"],
@@ -5418,7 +5463,7 @@ var getWatchStatusRoute = (0, import_zod_openapi52.createRoute)({
5418
5463
  }
5419
5464
  }
5420
5465
  });
5421
- var setWatchStatusRoute = (0, import_zod_openapi52.createRoute)({
5466
+ var setWatchStatusRoute = (0, import_zod_openapi53.createRoute)({
5422
5467
  method: "put",
5423
5468
  path: "/pages/watch",
5424
5469
  tags: ["page"],
@@ -5448,7 +5493,7 @@ var setWatchStatusRoute = (0, import_zod_openapi52.createRoute)({
5448
5493
  }
5449
5494
  }
5450
5495
  });
5451
- var deletePageRoute = (0, import_zod_openapi52.createRoute)({
5496
+ var deletePageRoute = (0, import_zod_openapi53.createRoute)({
5452
5497
  method: "delete",
5453
5498
  path: "/pages",
5454
5499
  tags: ["page"],
@@ -5482,7 +5527,7 @@ var deletePageRoute = (0, import_zod_openapi52.createRoute)({
5482
5527
  }
5483
5528
  }
5484
5529
  });
5485
- var revertDeletedPageRoute = (0, import_zod_openapi52.createRoute)({
5530
+ var revertDeletedPageRoute = (0, import_zod_openapi53.createRoute)({
5486
5531
  method: "post",
5487
5532
  path: "/pages/revert",
5488
5533
  tags: ["page"],
@@ -5512,7 +5557,7 @@ var revertDeletedPageRoute = (0, import_zod_openapi52.createRoute)({
5512
5557
  }
5513
5558
  }
5514
5559
  });
5515
- var revertToRevisionRoute = (0, import_zod_openapi52.createRoute)({
5560
+ var revertToRevisionRoute = (0, import_zod_openapi53.createRoute)({
5516
5561
  method: "post",
5517
5562
  path: "/pages/revert-to-revision",
5518
5563
  tags: ["page"],
@@ -5542,7 +5587,7 @@ var revertToRevisionRoute = (0, import_zod_openapi52.createRoute)({
5542
5587
  }
5543
5588
  }
5544
5589
  });
5545
- var renamePageRoute = (0, import_zod_openapi52.createRoute)({
5590
+ var renamePageRoute = (0, import_zod_openapi53.createRoute)({
5546
5591
  method: "post",
5547
5592
  path: "/pages/rename",
5548
5593
  tags: ["page"],
@@ -5562,7 +5607,7 @@ var renamePageRoute = (0, import_zod_openapi52.createRoute)({
5562
5607
  description: "PAGE_INVALID_NAME / PAGE_EXISTS / PAGE_RENAME_FAILED / PAGE_RENAME_TREE_FAILED",
5563
5608
  content: {
5564
5609
  "application/json": {
5565
- schema: import_zod_openapi52.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
5610
+ schema: import_zod_openapi53.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
5566
5611
  }
5567
5612
  }
5568
5613
  },
@@ -5580,7 +5625,7 @@ var renamePageRoute = (0, import_zod_openapi52.createRoute)({
5580
5625
  }
5581
5626
  }
5582
5627
  });
5583
- var renameSubtreeRoute = (0, import_zod_openapi52.createRoute)({
5628
+ var renameSubtreeRoute = (0, import_zod_openapi53.createRoute)({
5584
5629
  method: "post",
5585
5630
  path: "/pages/rename-subtree",
5586
5631
  tags: ["page"],
@@ -5600,7 +5645,7 @@ var renameSubtreeRoute = (0, import_zod_openapi52.createRoute)({
5600
5645
  description: "PAGE_INVALID_NAME / PAGE_RENAME_TREE_FAILED (collisions, nothing to move, or partial failure)",
5601
5646
  content: {
5602
5647
  "application/json": {
5603
- schema: import_zod_openapi52.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
5648
+ schema: import_zod_openapi53.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
5604
5649
  }
5605
5650
  }
5606
5651
  },
@@ -5650,20 +5695,20 @@ var pageRoutes = {
5650
5695
  };
5651
5696
 
5652
5697
  // src/contracts/page-preview.ts
5653
- var import_zod_openapi54 = require("@hono/zod-openapi");
5698
+ var import_zod_openapi55 = require("@hono/zod-openapi");
5654
5699
 
5655
5700
  // src/schemas/page-preview.ts
5656
- var import_zod_openapi53 = require("@hono/zod-openapi");
5657
- var PreviewPageRequestSchema = import_zod_openapi53.z.object({
5658
- body: import_zod_openapi53.z.string()
5701
+ var import_zod_openapi54 = require("@hono/zod-openapi");
5702
+ var PreviewPageRequestSchema = import_zod_openapi54.z.object({
5703
+ body: import_zod_openapi54.z.string()
5659
5704
  });
5660
- var PreviewPageResponseSchema = import_zod_openapi53.z.object({
5705
+ var PreviewPageResponseSchema = import_zod_openapi54.z.object({
5661
5706
  renderedAst: RenderedAstValueSchema.optional(),
5662
5707
  renderedAstArtifactKey: RenderedAstArtifactKeySchema.optional()
5663
5708
  });
5664
5709
 
5665
5710
  // src/contracts/page-preview.ts
5666
- var previewPageRoute = (0, import_zod_openapi54.createRoute)({
5711
+ var previewPageRoute = (0, import_zod_openapi55.createRoute)({
5667
5712
  method: "post",
5668
5713
  path: "/pages/preview",
5669
5714
  tags: ["page-preview"],
@@ -5701,80 +5746,80 @@ var pagePreviewRoutes = {
5701
5746
  };
5702
5747
 
5703
5748
  // src/contracts/presence.ts
5704
- var import_zod_openapi56 = require("@hono/zod-openapi");
5749
+ var import_zod_openapi57 = require("@hono/zod-openapi");
5705
5750
 
5706
5751
  // src/schemas/presence.ts
5707
- var import_zod_openapi55 = require("@hono/zod-openapi");
5708
- var PresenceTokenResponseSchema = import_zod_openapi55.z.object({
5709
- token: import_zod_openapi55.z.string(),
5710
- pageId: import_zod_openapi55.z.string(),
5711
- selfUserId: import_zod_openapi55.z.string(),
5712
- expiresAt: import_zod_openapi55.z.string()
5713
- });
5714
- var PresenceTokenPayloadSchema = import_zod_openapi55.z.object({
5715
- userId: import_zod_openapi55.z.string(),
5716
- pageId: import_zod_openapi55.z.string(),
5717
- iat: import_zod_openapi55.z.number().int(),
5718
- exp: import_zod_openapi55.z.number().int()
5719
- });
5720
- var PresenceViewerSchema = import_zod_openapi55.z.object({
5721
- userId: import_zod_openapi55.z.string(),
5722
- username: import_zod_openapi55.z.string(),
5723
- displayName: import_zod_openapi55.z.string(),
5724
- avatarUrl: import_zod_openapi55.z.string().nullable(),
5725
- isEditing: import_zod_openapi55.z.boolean(),
5726
- joinedAt: import_zod_openapi55.z.number().int()
5727
- });
5728
- var PresenceHeartbeatMessageSchema = import_zod_openapi55.z.object({
5729
- type: import_zod_openapi55.z.literal("heartbeat")
5752
+ var import_zod_openapi56 = require("@hono/zod-openapi");
5753
+ var PresenceTokenResponseSchema = import_zod_openapi56.z.object({
5754
+ token: import_zod_openapi56.z.string(),
5755
+ pageId: import_zod_openapi56.z.string(),
5756
+ selfUserId: import_zod_openapi56.z.string(),
5757
+ expiresAt: import_zod_openapi56.z.string()
5758
+ });
5759
+ var PresenceTokenPayloadSchema = import_zod_openapi56.z.object({
5760
+ userId: import_zod_openapi56.z.string(),
5761
+ pageId: import_zod_openapi56.z.string(),
5762
+ iat: import_zod_openapi56.z.number().int(),
5763
+ exp: import_zod_openapi56.z.number().int()
5764
+ });
5765
+ var PresenceViewerSchema = import_zod_openapi56.z.object({
5766
+ userId: import_zod_openapi56.z.string(),
5767
+ username: import_zod_openapi56.z.string(),
5768
+ displayName: import_zod_openapi56.z.string(),
5769
+ avatarUrl: import_zod_openapi56.z.string().nullable(),
5770
+ isEditing: import_zod_openapi56.z.boolean(),
5771
+ joinedAt: import_zod_openapi56.z.number().int()
5772
+ });
5773
+ var PresenceHeartbeatMessageSchema = import_zod_openapi56.z.object({
5774
+ type: import_zod_openapi56.z.literal("heartbeat")
5730
5775
  });
5731
5776
  var PresenceClientMessageSchema = PresenceHeartbeatMessageSchema;
5732
- var PresenceViewersMessageSchema = import_zod_openapi55.z.object({
5733
- type: import_zod_openapi55.z.literal("viewers"),
5734
- viewers: import_zod_openapi55.z.array(PresenceViewerSchema),
5735
- generation: import_zod_openapi55.z.number().int()
5736
- });
5737
- var PresencePageUpdatedMessageSchema = import_zod_openapi55.z.object({
5738
- type: import_zod_openapi55.z.literal("page-updated"),
5739
- pageId: import_zod_openapi55.z.string(),
5740
- revisionId: import_zod_openapi55.z.string(),
5741
- editorUserId: import_zod_openapi55.z.string(),
5742
- editorDisplayName: import_zod_openapi55.z.string()
5743
- });
5744
- var PresenceCommentChangedMessageSchema = import_zod_openapi55.z.object({
5745
- type: import_zod_openapi55.z.literal("comment-changed"),
5746
- pageId: import_zod_openapi55.z.string(),
5747
- changeType: import_zod_openapi55.z.enum(["added", "removed"]),
5748
- commentId: import_zod_openapi55.z.string(),
5749
- actorUserId: import_zod_openapi55.z.string().optional()
5750
- });
5751
- var PresenceServerMessageSchema = import_zod_openapi55.z.discriminatedUnion("type", [
5777
+ var PresenceViewersMessageSchema = import_zod_openapi56.z.object({
5778
+ type: import_zod_openapi56.z.literal("viewers"),
5779
+ viewers: import_zod_openapi56.z.array(PresenceViewerSchema),
5780
+ generation: import_zod_openapi56.z.number().int()
5781
+ });
5782
+ var PresencePageUpdatedMessageSchema = import_zod_openapi56.z.object({
5783
+ type: import_zod_openapi56.z.literal("page-updated"),
5784
+ pageId: import_zod_openapi56.z.string(),
5785
+ revisionId: import_zod_openapi56.z.string(),
5786
+ editorUserId: import_zod_openapi56.z.string(),
5787
+ editorDisplayName: import_zod_openapi56.z.string()
5788
+ });
5789
+ var PresenceCommentChangedMessageSchema = import_zod_openapi56.z.object({
5790
+ type: import_zod_openapi56.z.literal("comment-changed"),
5791
+ pageId: import_zod_openapi56.z.string(),
5792
+ changeType: import_zod_openapi56.z.enum(["added", "removed"]),
5793
+ commentId: import_zod_openapi56.z.string(),
5794
+ actorUserId: import_zod_openapi56.z.string().optional()
5795
+ });
5796
+ var PresenceServerMessageSchema = import_zod_openapi56.z.discriminatedUnion("type", [
5752
5797
  PresenceViewersMessageSchema,
5753
5798
  PresencePageUpdatedMessageSchema,
5754
5799
  PresenceCommentChangedMessageSchema
5755
5800
  ]);
5756
- var LikerSchema = import_zod_openapi55.z.object({
5757
- id: import_zod_openapi55.z.string(),
5758
- username: import_zod_openapi55.z.string(),
5759
- displayName: import_zod_openapi55.z.string(),
5760
- avatarUrl: import_zod_openapi55.z.string().nullable(),
5761
- likedAt: import_zod_openapi55.z.string().nullable()
5762
- });
5763
- var LikersResponseSchema = import_zod_openapi55.z.object({
5764
- users: import_zod_openapi55.z.array(LikerSchema),
5765
- totalCount: import_zod_openapi55.z.number().int().nonnegative()
5766
- });
5767
- var GetLikersRequestSchema = import_zod_openapi55.z.object({
5801
+ var LikerSchema = import_zod_openapi56.z.object({
5802
+ id: import_zod_openapi56.z.string(),
5803
+ username: import_zod_openapi56.z.string(),
5804
+ displayName: import_zod_openapi56.z.string(),
5805
+ avatarUrl: import_zod_openapi56.z.string().nullable(),
5806
+ likedAt: import_zod_openapi56.z.string().nullable()
5807
+ });
5808
+ var LikersResponseSchema = import_zod_openapi56.z.object({
5809
+ users: import_zod_openapi56.z.array(LikerSchema),
5810
+ totalCount: import_zod_openapi56.z.number().int().nonnegative()
5811
+ });
5812
+ var GetLikersRequestSchema = import_zod_openapi56.z.object({
5768
5813
  // Optional cap on returned `users`. `totalCount` always reflects the
5769
5814
  // full count regardless of `limit`. Omit for the full list.
5770
- limit: import_zod_openapi55.z.coerce.number().int().positive().optional()
5815
+ limit: import_zod_openapi56.z.coerce.number().int().positive().optional()
5771
5816
  });
5772
5817
 
5773
5818
  // src/contracts/presence.ts
5774
- var PageIdPathParamsSchema3 = import_zod_openapi56.z.object({
5775
- id: import_zod_openapi56.z.string().openapi({ description: "Page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
5819
+ var PageIdPathParamsSchema3 = import_zod_openapi57.z.object({
5820
+ id: import_zod_openapi57.z.string().openapi({ description: "Page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
5776
5821
  });
5777
- var getPresenceTokenRoute = (0, import_zod_openapi56.createRoute)({
5822
+ var getPresenceTokenRoute = (0, import_zod_openapi57.createRoute)({
5778
5823
  method: "get",
5779
5824
  path: "/pages/{id}/presence-token",
5780
5825
  tags: ["presence"],
@@ -5806,7 +5851,7 @@ var getPresenceTokenRoute = (0, import_zod_openapi56.createRoute)({
5806
5851
  }
5807
5852
  }
5808
5853
  });
5809
- var getLikersRoute = (0, import_zod_openapi56.createRoute)({
5854
+ var getLikersRoute = (0, import_zod_openapi57.createRoute)({
5810
5855
  method: "get",
5811
5856
  path: "/pages/{id}/likers",
5812
5857
  tags: ["presence"],
@@ -5845,50 +5890,50 @@ var presenceRoutes = {
5845
5890
  };
5846
5891
 
5847
5892
  // src/contracts/revision.ts
5848
- var import_zod_openapi58 = require("@hono/zod-openapi");
5893
+ var import_zod_openapi59 = require("@hono/zod-openapi");
5849
5894
 
5850
5895
  // src/schemas/revision.ts
5851
- var import_zod_openapi57 = require("@hono/zod-openapi");
5852
- var RevisionMetaSchema = import_zod_openapi57.z.object({
5853
- _id: import_zod_openapi57.z.string(),
5854
- path: import_zod_openapi57.z.string(),
5896
+ var import_zod_openapi58 = require("@hono/zod-openapi");
5897
+ var RevisionMetaSchema = import_zod_openapi58.z.object({
5898
+ _id: import_zod_openapi58.z.string(),
5899
+ path: import_zod_openapi58.z.string(),
5855
5900
  author: PageUserSchema.nullable().optional(),
5856
5901
  savedBy: PageUserSchema.nullable().optional(),
5857
- contributors: import_zod_openapi57.z.array(PageUserSchema).optional(),
5902
+ contributors: import_zod_openapi58.z.array(PageUserSchema).optional(),
5858
5903
  // RFC-0010 — edit channel. `web` (browser / collab editor) vs the API
5859
5904
  // token paths (`oauth` / `pat`). Absent on pre-RFC-0010 revisions. The
5860
5905
  // history UI shows an "app" chip for the token paths.
5861
- editVia: import_zod_openapi57.z.enum(["web", "oauth", "pat"]).optional(),
5862
- createdAt: import_zod_openapi57.z.string()
5906
+ editVia: import_zod_openapi58.z.enum(["web", "oauth", "pat"]).optional(),
5907
+ createdAt: import_zod_openapi58.z.string()
5863
5908
  });
5864
- var ListRevisionsRequestSchema = import_zod_openapi57.z.object({
5865
- limit: import_zod_openapi57.z.coerce.number().int().positive().max(200).optional().default(50),
5866
- offset: import_zod_openapi57.z.coerce.number().int().min(0).optional().default(0)
5909
+ var ListRevisionsRequestSchema = import_zod_openapi58.z.object({
5910
+ limit: import_zod_openapi58.z.coerce.number().int().positive().max(200).optional().default(50),
5911
+ offset: import_zod_openapi58.z.coerce.number().int().min(0).optional().default(0)
5867
5912
  });
5868
- var ListRevisionsResponseSchema = import_zod_openapi57.z.object({
5869
- revisions: import_zod_openapi57.z.array(RevisionMetaSchema),
5913
+ var ListRevisionsResponseSchema = import_zod_openapi58.z.object({
5914
+ revisions: import_zod_openapi58.z.array(RevisionMetaSchema),
5870
5915
  pager: PagerSchema
5871
5916
  });
5872
- var GetRevisionResponseSchema = import_zod_openapi57.z.object({
5917
+ var GetRevisionResponseSchema = import_zod_openapi58.z.object({
5873
5918
  revision: RevisionSchema
5874
5919
  });
5875
- var GetRevisionsRequestSchema = import_zod_openapi57.z.object({
5876
- ids: import_zod_openapi57.z.string().min(1, "ids is required")
5920
+ var GetRevisionsRequestSchema = import_zod_openapi58.z.object({
5921
+ ids: import_zod_openapi58.z.string().min(1, "ids is required")
5877
5922
  });
5878
- var GetRevisionsResponseSchema = import_zod_openapi57.z.object({
5879
- revisions: import_zod_openapi57.z.array(RevisionSchema)
5923
+ var GetRevisionsResponseSchema = import_zod_openapi58.z.object({
5924
+ revisions: import_zod_openapi58.z.array(RevisionSchema)
5880
5925
  });
5881
- var RevisionInvalidRequestErrorSchema = import_zod_openapi57.z.object({
5882
- error: import_zod_openapi57.z.object({
5883
- code: import_zod_openapi57.z.literal("INVALID_REQUEST"),
5884
- message: import_zod_openapi57.z.string()
5926
+ var RevisionInvalidRequestErrorSchema = import_zod_openapi58.z.object({
5927
+ error: import_zod_openapi58.z.object({
5928
+ code: import_zod_openapi58.z.literal("INVALID_REQUEST"),
5929
+ message: import_zod_openapi58.z.string()
5885
5930
  })
5886
5931
  });
5887
5932
 
5888
5933
  // src/contracts/revision.ts
5889
- var PageIdParamSchema = import_zod_openapi58.z.object({ page_id: import_zod_openapi58.z.string() });
5890
- var RevisionIdParamSchema = import_zod_openapi58.z.object({ id: import_zod_openapi58.z.string() });
5891
- var listRevisionsRoute = (0, import_zod_openapi58.createRoute)({
5934
+ var PageIdParamSchema = import_zod_openapi59.z.object({ page_id: import_zod_openapi59.z.string() });
5935
+ var RevisionIdParamSchema = import_zod_openapi59.z.object({ id: import_zod_openapi59.z.string() });
5936
+ var listRevisionsRoute = (0, import_zod_openapi59.createRoute)({
5892
5937
  method: "get",
5893
5938
  path: "/pages/{page_id}/revisions",
5894
5939
  tags: ["revision"],
@@ -5917,7 +5962,7 @@ var listRevisionsRoute = (0, import_zod_openapi58.createRoute)({
5917
5962
  }
5918
5963
  }
5919
5964
  });
5920
- var getRevisionsRoute = (0, import_zod_openapi58.createRoute)({
5965
+ var getRevisionsRoute = (0, import_zod_openapi59.createRoute)({
5921
5966
  method: "get",
5922
5967
  path: "/pages/revisions",
5923
5968
  tags: ["revision"],
@@ -5945,7 +5990,7 @@ var getRevisionsRoute = (0, import_zod_openapi58.createRoute)({
5945
5990
  }
5946
5991
  }
5947
5992
  });
5948
- var getRevisionRoute = (0, import_zod_openapi58.createRoute)({
5993
+ var getRevisionRoute = (0, import_zod_openapi59.createRoute)({
5949
5994
  method: "get",
5950
5995
  path: "/pages/revisions/{id}",
5951
5996
  tags: ["revision"],
@@ -5983,39 +6028,39 @@ var revisionRoutes = {
5983
6028
  };
5984
6029
 
5985
6030
  // src/contracts/admin-crypto.ts
5986
- var import_zod_openapi60 = require("@hono/zod-openapi");
6031
+ var import_zod_openapi61 = require("@hono/zod-openapi");
5987
6032
 
5988
6033
  // src/schemas/admin-crypto.ts
5989
- var import_zod_openapi59 = require("@hono/zod-openapi");
5990
- var SensitiveConfigEntrySchema = import_zod_openapi59.z.object({
5991
- ns: import_zod_openapi59.z.string(),
5992
- key: import_zod_openapi59.z.string(),
5993
- present: import_zod_openapi59.z.boolean(),
5994
- encrypted: import_zod_openapi59.z.boolean()
6034
+ var import_zod_openapi60 = require("@hono/zod-openapi");
6035
+ var SensitiveConfigEntrySchema = import_zod_openapi60.z.object({
6036
+ ns: import_zod_openapi60.z.string(),
6037
+ key: import_zod_openapi60.z.string(),
6038
+ present: import_zod_openapi60.z.boolean(),
6039
+ encrypted: import_zod_openapi60.z.boolean()
5995
6040
  });
5996
- var CryptoStatusResponseSchema = import_zod_openapi59.z.object({
6041
+ var CryptoStatusResponseSchema = import_zod_openapi60.z.object({
5997
6042
  /** False when CROWI_ENCRYPTION_KEY is not configured — UI shows a setup hint. */
5998
- encryptionConfigured: import_zod_openapi59.z.boolean(),
5999
- unencryptedCount: import_zod_openapi59.z.number().int().min(0),
6000
- encryptedCount: import_zod_openapi59.z.number().int().min(0),
6001
- entries: import_zod_openapi59.z.array(SensitiveConfigEntrySchema)
6043
+ encryptionConfigured: import_zod_openapi60.z.boolean(),
6044
+ unencryptedCount: import_zod_openapi60.z.number().int().min(0),
6045
+ encryptedCount: import_zod_openapi60.z.number().int().min(0),
6046
+ entries: import_zod_openapi60.z.array(SensitiveConfigEntrySchema)
6002
6047
  });
6003
- var ReencryptResponseSchema = import_zod_openapi59.z.object({
6004
- rewritten: import_zod_openapi59.z.number().int().min(0),
6048
+ var ReencryptResponseSchema = import_zod_openapi60.z.object({
6049
+ rewritten: import_zod_openapi60.z.number().int().min(0),
6005
6050
  /** Already encrypted, skipped on this run. */
6006
- alreadyEncrypted: import_zod_openapi59.z.number().int().min(0),
6051
+ alreadyEncrypted: import_zod_openapi60.z.number().int().min(0),
6007
6052
  /** Sensitive registry entries that had no row in the DB at all. */
6008
- missing: import_zod_openapi59.z.number().int().min(0)
6053
+ missing: import_zod_openapi60.z.number().int().min(0)
6009
6054
  });
6010
- var EncryptionNotConfiguredErrorSchema = import_zod_openapi59.z.object({
6011
- error: import_zod_openapi59.z.object({
6012
- code: import_zod_openapi59.z.literal("ENCRYPTION_NOT_CONFIGURED"),
6013
- message: import_zod_openapi59.z.string()
6055
+ var EncryptionNotConfiguredErrorSchema = import_zod_openapi60.z.object({
6056
+ error: import_zod_openapi60.z.object({
6057
+ code: import_zod_openapi60.z.literal("ENCRYPTION_NOT_CONFIGURED"),
6058
+ message: import_zod_openapi60.z.string()
6014
6059
  })
6015
6060
  });
6016
6061
 
6017
6062
  // src/contracts/admin-crypto.ts
6018
- var getCryptoStatusRoute = (0, import_zod_openapi60.createRoute)({
6063
+ var getCryptoStatusRoute = (0, import_zod_openapi61.createRoute)({
6019
6064
  method: "get",
6020
6065
  path: "/admin/crypto/status",
6021
6066
  tags: ["adminCrypto"],
@@ -6040,7 +6085,7 @@ var getCryptoStatusRoute = (0, import_zod_openapi60.createRoute)({
6040
6085
  }
6041
6086
  }
6042
6087
  });
6043
- var reencryptAllRoute = (0, import_zod_openapi60.createRoute)({
6088
+ var reencryptAllRoute = (0, import_zod_openapi61.createRoute)({
6044
6089
  method: "post",
6045
6090
  path: "/admin/crypto/reencrypt",
6046
6091
  tags: ["adminCrypto"],
@@ -6075,37 +6120,37 @@ var adminCryptoRoutes = {
6075
6120
  };
6076
6121
 
6077
6122
  // src/contracts/search.ts
6078
- var import_zod_openapi62 = require("@hono/zod-openapi");
6123
+ var import_zod_openapi63 = require("@hono/zod-openapi");
6079
6124
 
6080
6125
  // src/schemas/search.ts
6081
- var import_zod_openapi61 = require("@hono/zod-openapi");
6082
- var SearchPageTypeSchema = import_zod_openapi61.z.enum(["portal", "public", "user"]);
6083
- var SearchPagesRequestSchema = import_zod_openapi61.z.object({
6084
- q: import_zod_openapi61.z.string().min(1),
6085
- tree: import_zod_openapi61.z.string().optional(),
6126
+ var import_zod_openapi62 = require("@hono/zod-openapi");
6127
+ var SearchPageTypeSchema = import_zod_openapi62.z.enum(["portal", "public", "user"]);
6128
+ var SearchPagesRequestSchema = import_zod_openapi62.z.object({
6129
+ q: import_zod_openapi62.z.string().min(1),
6130
+ tree: import_zod_openapi62.z.string().optional(),
6086
6131
  type: SearchPageTypeSchema.optional(),
6087
- page: import_zod_openapi61.z.coerce.number().int().min(1).default(1),
6088
- limit: import_zod_openapi61.z.coerce.number().int().min(1).max(100).default(50)
6089
- });
6090
- var SearchHitSchema = import_zod_openapi61.z.object({
6091
- pageId: import_zod_openapi61.z.string(),
6092
- path: import_zod_openapi61.z.string(),
6093
- score: import_zod_openapi61.z.number().optional(),
6094
- snippet: import_zod_openapi61.z.string().optional(),
6095
- bookmarkCount: import_zod_openapi61.z.number(),
6132
+ page: import_zod_openapi62.z.coerce.number().int().min(1).default(1),
6133
+ limit: import_zod_openapi62.z.coerce.number().int().min(1).max(100).default(50)
6134
+ });
6135
+ var SearchHitSchema = import_zod_openapi62.z.object({
6136
+ pageId: import_zod_openapi62.z.string(),
6137
+ path: import_zod_openapi62.z.string(),
6138
+ score: import_zod_openapi62.z.number().optional(),
6139
+ snippet: import_zod_openapi62.z.string().optional(),
6140
+ bookmarkCount: import_zod_openapi62.z.number(),
6096
6141
  page: PageSchema
6097
6142
  });
6098
- var SearchPagesResponseSchema = import_zod_openapi61.z.object({
6099
- meta: import_zod_openapi61.z.object({
6100
- took: import_zod_openapi61.z.number().optional(),
6101
- total: import_zod_openapi61.z.number(),
6102
- results: import_zod_openapi61.z.number()
6143
+ var SearchPagesResponseSchema = import_zod_openapi62.z.object({
6144
+ meta: import_zod_openapi62.z.object({
6145
+ took: import_zod_openapi62.z.number().optional(),
6146
+ total: import_zod_openapi62.z.number(),
6147
+ results: import_zod_openapi62.z.number()
6103
6148
  }),
6104
- data: import_zod_openapi61.z.array(SearchHitSchema)
6149
+ data: import_zod_openapi62.z.array(SearchHitSchema)
6105
6150
  });
6106
6151
 
6107
6152
  // src/contracts/search.ts
6108
- var searchPagesRoute = (0, import_zod_openapi62.createRoute)({
6153
+ var searchPagesRoute = (0, import_zod_openapi63.createRoute)({
6109
6154
  method: "get",
6110
6155
  path: "/search",
6111
6156
  tags: ["search"],
@@ -6142,56 +6187,56 @@ var searchRoutes = {
6142
6187
  };
6143
6188
 
6144
6189
  // src/contracts/token-auth.ts
6145
- var import_zod_openapi64 = require("@hono/zod-openapi");
6190
+ var import_zod_openapi65 = require("@hono/zod-openapi");
6146
6191
 
6147
6192
  // src/schemas/auth.ts
6148
- var import_zod_openapi63 = require("@hono/zod-openapi");
6149
- var TokenAuthLoginRequestSchema = import_zod_openapi63.z.object({
6150
- email: import_zod_openapi63.z.string().email(),
6151
- password: import_zod_openapi63.z.string().min(6)
6152
- });
6153
- var TokenAuthResponseSchema = import_zod_openapi63.z.object({
6154
- accessToken: import_zod_openapi63.z.string(),
6155
- refreshToken: import_zod_openapi63.z.string(),
6156
- expiresIn: import_zod_openapi63.z.number(),
6193
+ var import_zod_openapi64 = require("@hono/zod-openapi");
6194
+ var TokenAuthLoginRequestSchema = import_zod_openapi64.z.object({
6195
+ email: import_zod_openapi64.z.string().email(),
6196
+ password: import_zod_openapi64.z.string().min(6)
6197
+ });
6198
+ var TokenAuthResponseSchema = import_zod_openapi64.z.object({
6199
+ accessToken: import_zod_openapi64.z.string(),
6200
+ refreshToken: import_zod_openapi64.z.string(),
6201
+ expiresIn: import_zod_openapi64.z.number(),
6157
6202
  // seconds until expiration
6158
- user: import_zod_openapi63.z.object({
6159
- id: import_zod_openapi63.z.string(),
6160
- username: import_zod_openapi63.z.string(),
6161
- email: import_zod_openapi63.z.string().email(),
6162
- name: import_zod_openapi63.z.string(),
6163
- image: import_zod_openapi63.z.string().optional(),
6164
- admin: import_zod_openapi63.z.boolean().optional()
6203
+ user: import_zod_openapi64.z.object({
6204
+ id: import_zod_openapi64.z.string(),
6205
+ username: import_zod_openapi64.z.string(),
6206
+ email: import_zod_openapi64.z.string().email(),
6207
+ name: import_zod_openapi64.z.string(),
6208
+ image: import_zod_openapi64.z.string().optional(),
6209
+ admin: import_zod_openapi64.z.boolean().optional()
6165
6210
  })
6166
6211
  });
6167
- var RefreshTokenRequestSchema = import_zod_openapi63.z.object({
6168
- refreshToken: import_zod_openapi63.z.string()
6212
+ var RefreshTokenRequestSchema = import_zod_openapi64.z.object({
6213
+ refreshToken: import_zod_openapi64.z.string()
6169
6214
  });
6170
- var TokenAuthRegisterRequestSchema = import_zod_openapi63.z.object({
6171
- username: import_zod_openapi63.z.string(),
6172
- name: import_zod_openapi63.z.string(),
6173
- email: import_zod_openapi63.z.string().email(),
6174
- password: import_zod_openapi63.z.string().min(6)
6215
+ var TokenAuthRegisterRequestSchema = import_zod_openapi64.z.object({
6216
+ username: UsernameSchema,
6217
+ name: import_zod_openapi64.z.string(),
6218
+ email: import_zod_openapi64.z.string().email(),
6219
+ password: import_zod_openapi64.z.string().min(6)
6175
6220
  });
6176
- var RegisterPendingResponseSchema = import_zod_openapi63.z.object({
6177
- status: import_zod_openapi63.z.enum(["confirmation_required", "approval_required"])
6221
+ var RegisterPendingResponseSchema = import_zod_openapi64.z.object({
6222
+ status: import_zod_openapi64.z.enum(["confirmation_required", "approval_required"])
6178
6223
  });
6179
6224
 
6180
6225
  // src/contracts/token-auth.ts
6181
- var TokenLogoutResponseSchema = import_zod_openapi64.z.object({ message: import_zod_openapi64.z.string() });
6182
- var TokenMeResponseSchema = import_zod_openapi64.z.object({
6183
- user: import_zod_openapi64.z.object({
6184
- id: import_zod_openapi64.z.string(),
6185
- username: import_zod_openapi64.z.string(),
6186
- email: import_zod_openapi64.z.string().email(),
6187
- name: import_zod_openapi64.z.string(),
6188
- image: import_zod_openapi64.z.string().optional(),
6189
- status: import_zod_openapi64.z.number(),
6190
- admin: import_zod_openapi64.z.boolean().optional(),
6191
- createdAt: import_zod_openapi64.z.string()
6226
+ var TokenLogoutResponseSchema = import_zod_openapi65.z.object({ message: import_zod_openapi65.z.string() });
6227
+ var TokenMeResponseSchema = import_zod_openapi65.z.object({
6228
+ user: import_zod_openapi65.z.object({
6229
+ id: import_zod_openapi65.z.string(),
6230
+ username: import_zod_openapi65.z.string(),
6231
+ email: import_zod_openapi65.z.string().email(),
6232
+ name: import_zod_openapi65.z.string(),
6233
+ image: import_zod_openapi65.z.string().optional(),
6234
+ status: import_zod_openapi65.z.number(),
6235
+ admin: import_zod_openapi65.z.boolean().optional(),
6236
+ createdAt: import_zod_openapi65.z.string()
6192
6237
  })
6193
6238
  });
6194
- var tokenLoginRoute = (0, import_zod_openapi64.createRoute)({
6239
+ var tokenLoginRoute = (0, import_zod_openapi65.createRoute)({
6195
6240
  method: "post",
6196
6241
  path: "/auth/login",
6197
6242
  tags: ["tokenAuth"],
@@ -6228,7 +6273,7 @@ var tokenLoginRoute = (0, import_zod_openapi64.createRoute)({
6228
6273
  }
6229
6274
  }
6230
6275
  });
6231
- var tokenRegisterRoute = (0, import_zod_openapi64.createRoute)({
6276
+ var tokenRegisterRoute = (0, import_zod_openapi65.createRoute)({
6232
6277
  method: "post",
6233
6278
  path: "/auth/register",
6234
6279
  tags: ["tokenAuth"],
@@ -6269,7 +6314,7 @@ var tokenRegisterRoute = (0, import_zod_openapi64.createRoute)({
6269
6314
  }
6270
6315
  }
6271
6316
  });
6272
- var tokenRefreshRoute = (0, import_zod_openapi64.createRoute)({
6317
+ var tokenRefreshRoute = (0, import_zod_openapi65.createRoute)({
6273
6318
  method: "post",
6274
6319
  path: "/auth/refresh",
6275
6320
  tags: ["tokenAuth"],
@@ -6306,7 +6351,7 @@ var tokenRefreshRoute = (0, import_zod_openapi64.createRoute)({
6306
6351
  }
6307
6352
  }
6308
6353
  });
6309
- var tokenLogoutRoute = (0, import_zod_openapi64.createRoute)({
6354
+ var tokenLogoutRoute = (0, import_zod_openapi65.createRoute)({
6310
6355
  method: "post",
6311
6356
  path: "/auth/logout",
6312
6357
  tags: ["tokenAuth"],
@@ -6316,7 +6361,7 @@ var tokenLogoutRoute = (0, import_zod_openapi64.createRoute)({
6316
6361
  body: {
6317
6362
  content: {
6318
6363
  "application/json": {
6319
- schema: import_zod_openapi64.z.object({ refreshToken: import_zod_openapi64.z.string().optional() })
6364
+ schema: import_zod_openapi65.z.object({ refreshToken: import_zod_openapi65.z.string().optional() })
6320
6365
  }
6321
6366
  }
6322
6367
  }
@@ -6336,7 +6381,7 @@ var tokenLogoutRoute = (0, import_zod_openapi64.createRoute)({
6336
6381
  }
6337
6382
  }
6338
6383
  });
6339
- var tokenMeRoute = (0, import_zod_openapi64.createRoute)({
6384
+ var tokenMeRoute = (0, import_zod_openapi65.createRoute)({
6340
6385
  method: "get",
6341
6386
  path: "/auth/me",
6342
6387
  tags: ["tokenAuth"],
@@ -6366,22 +6411,22 @@ var tokenAuthRoutes = {
6366
6411
  };
6367
6412
 
6368
6413
  // src/contracts/invite-accept.ts
6369
- var import_zod_openapi66 = require("@hono/zod-openapi");
6414
+ var import_zod_openapi67 = require("@hono/zod-openapi");
6370
6415
 
6371
6416
  // src/schemas/invite-accept.ts
6372
- var import_zod_openapi65 = require("@hono/zod-openapi");
6373
- var InviteAcceptRequestSchema = import_zod_openapi65.z.object({
6374
- token: import_zod_openapi65.z.string(),
6375
- username: import_zod_openapi65.z.string().min(1),
6376
- name: import_zod_openapi65.z.string().min(1),
6377
- password: import_zod_openapi65.z.string().min(6)
6417
+ var import_zod_openapi66 = require("@hono/zod-openapi");
6418
+ var InviteAcceptRequestSchema = import_zod_openapi66.z.object({
6419
+ token: import_zod_openapi66.z.string(),
6420
+ username: UsernameSchema,
6421
+ name: import_zod_openapi66.z.string().min(1),
6422
+ password: import_zod_openapi66.z.string().min(6)
6378
6423
  });
6379
- var InvitePreviewResponseSchema = import_zod_openapi65.z.object({
6380
- email: import_zod_openapi65.z.string().email()
6424
+ var InvitePreviewResponseSchema = import_zod_openapi66.z.object({
6425
+ email: import_zod_openapi66.z.string().email()
6381
6426
  });
6382
6427
 
6383
6428
  // src/contracts/invite-accept.ts
6384
- var invitePreviewRoute = (0, import_zod_openapi66.createRoute)({
6429
+ var invitePreviewRoute = (0, import_zod_openapi67.createRoute)({
6385
6430
  method: "get",
6386
6431
  path: "/invite/accept",
6387
6432
  tags: ["inviteAccept"],
@@ -6408,7 +6453,7 @@ var invitePreviewRoute = (0, import_zod_openapi66.createRoute)({
6408
6453
  }
6409
6454
  }
6410
6455
  });
6411
- var acceptInviteRoute = (0, import_zod_openapi66.createRoute)({
6456
+ var acceptInviteRoute = (0, import_zod_openapi67.createRoute)({
6412
6457
  method: "post",
6413
6458
  path: "/invite/accept",
6414
6459
  tags: ["inviteAccept"],
@@ -6451,23 +6496,23 @@ var inviteAcceptRoutes = {
6451
6496
  };
6452
6497
 
6453
6498
  // src/contracts/password-reset.ts
6454
- var import_zod_openapi68 = require("@hono/zod-openapi");
6499
+ var import_zod_openapi69 = require("@hono/zod-openapi");
6455
6500
 
6456
6501
  // src/schemas/password-reset.ts
6457
- var import_zod_openapi67 = require("@hono/zod-openapi");
6458
- var ForgotPasswordRequestSchema = import_zod_openapi67.z.object({
6459
- email: import_zod_openapi67.z.string().email()
6502
+ var import_zod_openapi68 = require("@hono/zod-openapi");
6503
+ var ForgotPasswordRequestSchema = import_zod_openapi68.z.object({
6504
+ email: import_zod_openapi68.z.string().email()
6460
6505
  });
6461
- var ForgotPasswordResponseSchema = import_zod_openapi67.z.object({
6462
- ok: import_zod_openapi67.z.literal(true)
6506
+ var ForgotPasswordResponseSchema = import_zod_openapi68.z.object({
6507
+ ok: import_zod_openapi68.z.literal(true)
6463
6508
  });
6464
- var ResetPasswordRequestSchema = import_zod_openapi67.z.object({
6465
- token: import_zod_openapi67.z.string(),
6466
- password: import_zod_openapi67.z.string().min(6)
6509
+ var ResetPasswordRequestSchema = import_zod_openapi68.z.object({
6510
+ token: import_zod_openapi68.z.string(),
6511
+ password: import_zod_openapi68.z.string().min(6)
6467
6512
  });
6468
6513
 
6469
6514
  // src/contracts/password-reset.ts
6470
- var forgotPasswordRoute = (0, import_zod_openapi68.createRoute)({
6515
+ var forgotPasswordRoute = (0, import_zod_openapi69.createRoute)({
6471
6516
  method: "post",
6472
6517
  path: "/auth/forgot-password",
6473
6518
  tags: ["passwordReset"],
@@ -6492,7 +6537,7 @@ var forgotPasswordRoute = (0, import_zod_openapi68.createRoute)({
6492
6537
  }
6493
6538
  }
6494
6539
  });
6495
- var validateResetTokenRoute = (0, import_zod_openapi68.createRoute)({
6540
+ var validateResetTokenRoute = (0, import_zod_openapi69.createRoute)({
6496
6541
  method: "get",
6497
6542
  path: "/auth/reset-password",
6498
6543
  tags: ["passwordReset"],
@@ -6515,7 +6560,7 @@ var validateResetTokenRoute = (0, import_zod_openapi68.createRoute)({
6515
6560
  }
6516
6561
  }
6517
6562
  });
6518
- var selfResetPasswordRoute = (0, import_zod_openapi68.createRoute)({
6563
+ var selfResetPasswordRoute = (0, import_zod_openapi69.createRoute)({
6519
6564
  method: "post",
6520
6565
  path: "/auth/reset-password",
6521
6566
  tags: ["passwordReset"],
@@ -6555,19 +6600,19 @@ var passwordResetRoutes = {
6555
6600
  };
6556
6601
 
6557
6602
  // src/contracts/activation.ts
6558
- var import_zod_openapi70 = require("@hono/zod-openapi");
6603
+ var import_zod_openapi71 = require("@hono/zod-openapi");
6559
6604
 
6560
6605
  // src/schemas/activation.ts
6561
- var import_zod_openapi69 = require("@hono/zod-openapi");
6562
- var ActivateRequestSchema = import_zod_openapi69.z.object({
6563
- token: import_zod_openapi69.z.string()
6606
+ var import_zod_openapi70 = require("@hono/zod-openapi");
6607
+ var ActivateRequestSchema = import_zod_openapi70.z.object({
6608
+ token: import_zod_openapi70.z.string()
6564
6609
  });
6565
- var ActivateValidationResponseSchema = import_zod_openapi69.z.object({
6566
- ok: import_zod_openapi69.z.literal(true)
6610
+ var ActivateValidationResponseSchema = import_zod_openapi70.z.object({
6611
+ ok: import_zod_openapi70.z.literal(true)
6567
6612
  });
6568
6613
 
6569
6614
  // src/contracts/activation.ts
6570
- var validateActivationTokenRoute = (0, import_zod_openapi70.createRoute)({
6615
+ var validateActivationTokenRoute = (0, import_zod_openapi71.createRoute)({
6571
6616
  method: "get",
6572
6617
  path: "/auth/activate",
6573
6618
  tags: ["activation"],
@@ -6590,7 +6635,7 @@ var validateActivationTokenRoute = (0, import_zod_openapi70.createRoute)({
6590
6635
  }
6591
6636
  }
6592
6637
  });
6593
- var activateAccountRoute = (0, import_zod_openapi70.createRoute)({
6638
+ var activateAccountRoute = (0, import_zod_openapi71.createRoute)({
6594
6639
  method: "post",
6595
6640
  path: "/auth/activate",
6596
6641
  tags: ["activation"],
@@ -6625,21 +6670,21 @@ var activationRoutes = {
6625
6670
  };
6626
6671
 
6627
6672
  // src/contracts/email-change.ts
6628
- var import_zod_openapi72 = require("@hono/zod-openapi");
6673
+ var import_zod_openapi73 = require("@hono/zod-openapi");
6629
6674
 
6630
6675
  // src/schemas/email-change.ts
6631
- var import_zod_openapi71 = require("@hono/zod-openapi");
6632
- var ConfirmEmailChangeRequestSchema = import_zod_openapi71.z.object({
6633
- token: import_zod_openapi71.z.string()
6676
+ var import_zod_openapi72 = require("@hono/zod-openapi");
6677
+ var ConfirmEmailChangeRequestSchema = import_zod_openapi72.z.object({
6678
+ token: import_zod_openapi72.z.string()
6634
6679
  });
6635
- var ConfirmEmailChangeResponseSchema = import_zod_openapi71.z.object({
6636
- ok: import_zod_openapi71.z.literal(true),
6680
+ var ConfirmEmailChangeResponseSchema = import_zod_openapi72.z.object({
6681
+ ok: import_zod_openapi72.z.literal(true),
6637
6682
  /** The newly-confirmed email address. */
6638
- email: import_zod_openapi71.z.string().email()
6683
+ email: import_zod_openapi72.z.string().email()
6639
6684
  });
6640
6685
 
6641
6686
  // src/contracts/email-change.ts
6642
- var validateEmailChangeTokenRoute = (0, import_zod_openapi72.createRoute)({
6687
+ var validateEmailChangeTokenRoute = (0, import_zod_openapi73.createRoute)({
6643
6688
  method: "get",
6644
6689
  path: "/auth/confirm-email-change",
6645
6690
  tags: ["emailChange"],
@@ -6662,7 +6707,7 @@ var validateEmailChangeTokenRoute = (0, import_zod_openapi72.createRoute)({
6662
6707
  }
6663
6708
  }
6664
6709
  });
6665
- var confirmEmailChangeRoute = (0, import_zod_openapi72.createRoute)({
6710
+ var confirmEmailChangeRoute = (0, import_zod_openapi73.createRoute)({
6666
6711
  method: "post",
6667
6712
  path: "/auth/confirm-email-change",
6668
6713
  tags: ["emailChange"],
@@ -6701,9 +6746,9 @@ var emailChangeRoutes = {
6701
6746
  };
6702
6747
 
6703
6748
  // src/contracts/user.ts
6704
- var import_zod_openapi73 = require("@hono/zod-openapi");
6705
- var UsernameParamSchema = import_zod_openapi73.z.object({ username: import_zod_openapi73.z.string() });
6706
- var getUserPageRoute = (0, import_zod_openapi73.createRoute)({
6749
+ var import_zod_openapi74 = require("@hono/zod-openapi");
6750
+ var UsernameParamSchema = import_zod_openapi74.z.object({ username: import_zod_openapi74.z.string() });
6751
+ var getUserPageRoute = (0, import_zod_openapi74.createRoute)({
6707
6752
  method: "get",
6708
6753
  path: "/user/{username}",
6709
6754
  tags: ["user"],
@@ -6731,7 +6776,7 @@ var getUserPageRoute = (0, import_zod_openapi73.createRoute)({
6731
6776
  }
6732
6777
  }
6733
6778
  });
6734
- var getUserBookmarksRoute = (0, import_zod_openapi73.createRoute)({
6779
+ var getUserBookmarksRoute = (0, import_zod_openapi74.createRoute)({
6735
6780
  method: "get",
6736
6781
  path: "/user/{username}/bookmarks",
6737
6782
  tags: ["user"],
@@ -6760,7 +6805,7 @@ var getUserBookmarksRoute = (0, import_zod_openapi73.createRoute)({
6760
6805
  }
6761
6806
  }
6762
6807
  });
6763
- var getUserPagesRoute = (0, import_zod_openapi73.createRoute)({
6808
+ var getUserPagesRoute = (0, import_zod_openapi74.createRoute)({
6764
6809
  method: "get",
6765
6810
  path: "/user/{username}/pages",
6766
6811
  tags: ["user"],
@@ -6789,7 +6834,7 @@ var getUserPagesRoute = (0, import_zod_openapi73.createRoute)({
6789
6834
  }
6790
6835
  }
6791
6836
  });
6792
- var getUserSubpagesRoute = (0, import_zod_openapi73.createRoute)({
6837
+ var getUserSubpagesRoute = (0, import_zod_openapi74.createRoute)({
6793
6838
  method: "get",
6794
6839
  path: "/user/{username}/subpages",
6795
6840
  tags: ["user"],
@@ -6826,7 +6871,7 @@ var getUserSubpagesRoute = (0, import_zod_openapi73.createRoute)({
6826
6871
  }
6827
6872
  }
6828
6873
  });
6829
- var listMembersRoute = (0, import_zod_openapi73.createRoute)({
6874
+ var listMembersRoute = (0, import_zod_openapi74.createRoute)({
6830
6875
  method: "get",
6831
6876
  path: "/users",
6832
6877
  tags: ["user"],
@@ -7120,8 +7165,9 @@ var stubPendingUsersCount = { count: 0 };
7120
7165
  var stubListPlugins = { plugins: [] };
7121
7166
  var stubPluginConfig = { name: "", fields: [], values: {} };
7122
7167
  var stubUpdatePluginConfig = { ok: true, hotReloaded: false, reconfigureFailed: false };
7168
+ var stubPluginReadiness = { issues: [] };
7123
7169
  var stubClearRenderCache = { ok: true, clearedAt: "", removedCount: 0 };
7124
- var appAuthMeUserChain = new import_zod_openapi74.OpenAPIHono().openapi(
7170
+ var appAuthMeUserChain = new import_zod_openapi75.OpenAPIHono().openapi(
7125
7171
  appRoutes.getAppInfoRoute,
7126
7172
  (c) => c.json(
7127
7173
  {
@@ -7155,31 +7201,31 @@ var appAuthMeUserChain = new import_zod_openapi74.OpenAPIHono().openapi(
7155
7201
  meRoutes.updatePasswordRoute,
7156
7202
  (c) => c.json({ status: "ok", message: "", accessToken: "", refreshToken: "", expiresIn: 0 }, 200)
7157
7203
  ).openapi(meRoutes.recentlyViewedPagesRoute, (c) => c.json({ pages: [] }, 200)).openapi(accessTokenRoutes.listAccessTokensRoute, (c) => c.json({ accessTokens: [] }, 200)).openapi(accessTokenRoutes.createAccessTokenRoute, (c) => c.json(stubCreateAccessToken, 201)).openapi(accessTokenRoutes.deleteAccessTokenRoute, (c) => c.json(stubAccessToken, 200)).openapi(userRoutes.getUserPageRoute, (c) => c.json(stubUserPage, 200)).openapi(userRoutes.getUserBookmarksRoute, (c) => c.json(stubUserBookmarks, 200)).openapi(userRoutes.getUserPagesRoute, (c) => c.json(stubUserPages, 200)).openapi(userRoutes.getUserSubpagesRoute, (c) => c.json(stubUserPages, 200)).openapi(userRoutes.listMembersRoute, (c) => c.json(stubListUsers, 200));
7158
- var bookmarkBacklinkCommentRevisionChain = new import_zod_openapi74.OpenAPIHono().openapi(bookmarkRoutes.getBookmarkRoute, (c) => c.json(stubBookmarkResponse, 200)).openapi(bookmarkRoutes.listMyBookmarksRoute, (c) => c.json(stubListMyBookmarks, 200)).openapi(bookmarkRoutes.addBookmarkRoute, (c) => c.json(stubBookmarkResponse, 200)).openapi(bookmarkRoutes.removeBookmarkRoute, (c) => c.json(stubRemoveBookmark, 200)).openapi(backlinkRoutes.getBacklinksRoute, (c) => c.json(stubBacklinks, 200)).openapi(commentRoutes.listCommentsRoute, (c) => c.json(stubListComments, 200)).openapi(commentRoutes.addCommentRoute, (c) => c.json(stubAddComment, 200)).openapi(commentRoutes.deleteCommentRoute, (c) => c.json(stubDeleteComment, 200)).openapi(revisionRoutes.listRevisionsRoute, (c) => c.json(stubListRevisions, 200)).openapi(revisionRoutes.getRevisionsRoute, (c) => c.json(stubGetRevisions, 200)).openapi(revisionRoutes.getRevisionRoute, (c) => c.json(stubGetRevision, 200));
7159
- var pageChain = new import_zod_openapi74.OpenAPIHono().openapi(pageRoutes.getPageRoute, (c) => c.json(stubPageWithRevision, 200)).openapi(pageRoutes.listPagesRoute, (c) => c.json(stubListPages, 200)).openapi(pageRoutes.listPageChildrenRoute, (c) => c.json(stubListPageChildren, 200)).openapi(pageRoutes.createPageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.updatePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.setPageGrantRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.seenPageRoute, (c) => c.json(stubSeenUsers, 200)).openapi(pageRoutes.getSeenUsersRoute, (c) => c.json(stubSeenUsers, 200)).openapi(pageRoutes.likePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.unlikePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.claimPageLinkAccessRoute, (c) => c.json({ ...stubPageWithRevision, granted: false }, 200)).openapi(pageRoutes.getWatchStatusRoute, (c) => c.json(stubWatchStatus, 200)).openapi(pageRoutes.setWatchStatusRoute, (c) => c.json(stubWatchStatus, 200)).openapi(pageRoutes.deletePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.revertDeletedPageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.revertToRevisionRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.renamePageRoute, (c) => c.json({ ...stubPageResponse, renamed_count: 1 }, 200)).openapi(pageRoutes.renameSubtreeRoute, (c) => c.json({ renamed_count: 0 }, 200)).openapi(pagePreviewRoutes.previewPageRoute, (c) => c.json(stubPreview, 200)).openapi(pageCollabRoutes.getYjsTokenRoute, (c) => c.json(stubWsToken, 200)).openapi(presenceRoutes.getPresenceTokenRoute, (c) => c.json(stubPresenceToken, 200)).openapi(presenceRoutes.getLikersRoute, (c) => c.json(stubLikers, 200));
7160
- var lateContractApp = new import_zod_openapi74.OpenAPIHono().openapi(draftRoutes.createDraftRoute, (c) => c.json(stubCreateDraft, 201)).openapi(draftRoutes.listDraftsRoute, (c) => c.json(stubListDrafts, 200)).openapi(draftRoutes.cancelDraftRoute, (c) => c.json(stubCreateDraft, 200)).openapi(autocompleteRoutes.autocompleteUsersRoute, (c) => c.json(stubAutocomplete, 200)).openapi(autocompleteRoutes.autocompletePagesRoute, (c) => c.json(stubAutocomplete, 200)).openapi(attachmentRoutes.getAttachmentUsageRoute, (c) => c.json(stubAttachmentUsage, 200)).openapi(attachmentRoutes.listAttachmentsRoute, (c) => c.json(stubListAttachments, 200)).openapi(attachmentRoutes.addAttachmentRoute, (c) => c.json(stubAddAttachment, 200)).openapi(attachmentRoutes.uploadAttachmentRoute, (c) => c.json(stubUploadAttachment, 200)).openapi(attachmentRoutes.getAttachmentMetaRoute, (c) => c.json(stubAttachmentMeta, 200)).openapi(attachmentRoutes.removeAttachmentRoute, (c) => c.json(stubRemoveAttachment, 200)).openapi(searchRoutes.searchPagesRoute, (c) => c.json(stubSearchPages, 200)).openapi(adminCryptoRoutes.getCryptoStatusRoute, (c) => c.json(stubCryptoStatus, 200)).openapi(adminCryptoRoutes.reencryptAllRoute, (c) => c.json(stubReencrypt, 200)).openapi(notificationRoutes.listNotificationsRoute, (c) => c.json(stubListNotifications, 200)).openapi(notificationRoutes.markAllAsReadRoute, (c) => c.json(stubMarkAllAsRead, 200)).openapi(notificationRoutes.getNotificationsTokenRoute, (c) => c.json(stubNotificationsToken, 200)).openapi(notificationRoutes.getUnreadCountRoute, (c) => c.json(stubNotificationStatus, 200)).openapi(notificationRoutes.openNotificationRoute, (c) => c.json(stubOpenNotification, 200));
7161
- var adminSettingsContractApp = new import_zod_openapi74.OpenAPIHono().openapi(adminAppRoutes.getAppSettingsRoute, (c) => c.json(stubGetAppSettings, 200)).openapi(adminAppRoutes.updateAppSettingsRoute, (c) => c.json(stubUpdateAppSettings, 200)).openapi(adminAuthRoutes.getAuthSettingsRoute, (c) => c.json(stubAuthSettings, 200)).openapi(adminAuthRoutes.updateAuthSettingsRoute, (c) => c.json(stubAuthSettings, 200)).openapi(adminSecurityRoutes.getSecuritySettingsRoute, (c) => c.json(stubSecuritySettings, 200)).openapi(adminSecurityRoutes.updateSecuritySettingsRoute, (c) => c.json(stubSecuritySettings, 200)).openapi(adminMailRoutes.getMailSettingsRoute, (c) => c.json(stubMailSettings, 200)).openapi(adminMailRoutes.updateMailSettingsRoute, (c) => c.json(stubUpdateMailSettings, 200)).openapi(adminMailRoutes.sendTestMailRoute, (c) => c.json(stubSendTestMail, 200)).openapi(adminStorageRoutes.getStorageStatusRoute, (c) => c.json(stubStorageStatus, 200)).openapi(adminSearchRoutes.getSearchStatusRoute, (c) => c.json(stubSearchStatus, 200));
7162
- var adminUsersPluginsContractApp = new import_zod_openapi74.OpenAPIHono().openapi(adminUsersRoutes.listUsersRoute, (c) => c.json(stubListAdminUsers, 200)).openapi(adminUsersRoutes.searchUsersByEmailRoute, (c) => c.json(stubSearchAdminUsersByEmail, 200)).openapi(adminUsersRoutes.pendingUsersCountRoute, (c) => c.json(stubPendingUsersCount, 200)).openapi(adminUsersRoutes.inviteUsersRoute, (c) => c.json(stubInviteUsers, 200)).openapi(adminUsersRoutes.editUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.makeAdminRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.removeFromAdminRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.activateUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.suspendUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.resetPasswordRoute, (c) => c.json(stubResetPassword, 200)).openapi(adminUsersRoutes.resendInviteRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.updateUserEmailRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.deleteUserRoute, (c) => c.json(stubDeleteAdminUser, 200)).openapi(adminPluginsRoutes.listPluginsRoute, (c) => c.json(stubListPlugins, 200)).openapi(adminPluginsRoutes.getPluginConfigRoute, (c) => c.json(stubPluginConfig, 200)).openapi(adminPluginsRoutes.updatePluginConfigRoute, (c) => c.json(stubUpdatePluginConfig, 200)).openapi(adminPluginsRoutes.clearRenderCacheAllRoute, (c) => c.json(stubClearRenderCache, 200)).openapi(adminPluginsRoutes.clearRenderCachePluginRoute, (c) => c.json(stubClearRenderCache, 200));
7163
- var oauthContractApp = new import_zod_openapi74.OpenAPIHono().openapi(oauthRoutes.authorizeRoute, (c) => c.json(stubAuthorize, 200)).openapi(oauthRoutes.tokenRoute, (c) => c.json(stubToken, 200)).openapi(oauthRoutes.revokeRoute, (c) => c.json(stubRevoke, 200)).openapi(oauthRoutes.discoveryRoute, (c) => c.json(stubDiscovery, 200)).openapi(oauthRoutes.deviceAuthorizeRoute, (c) => c.json(stubDeviceAuthorize, 200)).openapi(oauthRoutes.deviceInfoRoute, (c) => c.json(stubDeviceInfo, 200)).openapi(oauthRoutes.deviceVerifyRoute, (c) => c.json(stubDeviceVerify, 200)).openapi(oauthRoutes.clientInfoRoute, (c) => c.json(stubClientInfo, 200));
7204
+ var bookmarkBacklinkCommentRevisionChain = new import_zod_openapi75.OpenAPIHono().openapi(bookmarkRoutes.getBookmarkRoute, (c) => c.json(stubBookmarkResponse, 200)).openapi(bookmarkRoutes.listMyBookmarksRoute, (c) => c.json(stubListMyBookmarks, 200)).openapi(bookmarkRoutes.addBookmarkRoute, (c) => c.json(stubBookmarkResponse, 200)).openapi(bookmarkRoutes.removeBookmarkRoute, (c) => c.json(stubRemoveBookmark, 200)).openapi(backlinkRoutes.getBacklinksRoute, (c) => c.json(stubBacklinks, 200)).openapi(commentRoutes.listCommentsRoute, (c) => c.json(stubListComments, 200)).openapi(commentRoutes.addCommentRoute, (c) => c.json(stubAddComment, 200)).openapi(commentRoutes.deleteCommentRoute, (c) => c.json(stubDeleteComment, 200)).openapi(revisionRoutes.listRevisionsRoute, (c) => c.json(stubListRevisions, 200)).openapi(revisionRoutes.getRevisionsRoute, (c) => c.json(stubGetRevisions, 200)).openapi(revisionRoutes.getRevisionRoute, (c) => c.json(stubGetRevision, 200));
7205
+ var pageChain = new import_zod_openapi75.OpenAPIHono().openapi(pageRoutes.getPageRoute, (c) => c.json(stubPageWithRevision, 200)).openapi(pageRoutes.listPagesRoute, (c) => c.json(stubListPages, 200)).openapi(pageRoutes.listPageChildrenRoute, (c) => c.json(stubListPageChildren, 200)).openapi(pageRoutes.createPageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.updatePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.setPageGrantRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.seenPageRoute, (c) => c.json(stubSeenUsers, 200)).openapi(pageRoutes.getSeenUsersRoute, (c) => c.json(stubSeenUsers, 200)).openapi(pageRoutes.likePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.unlikePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.claimPageLinkAccessRoute, (c) => c.json({ ...stubPageWithRevision, granted: false }, 200)).openapi(pageRoutes.getWatchStatusRoute, (c) => c.json(stubWatchStatus, 200)).openapi(pageRoutes.setWatchStatusRoute, (c) => c.json(stubWatchStatus, 200)).openapi(pageRoutes.deletePageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.revertDeletedPageRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.revertToRevisionRoute, (c) => c.json(stubPageResponse, 200)).openapi(pageRoutes.renamePageRoute, (c) => c.json({ ...stubPageResponse, renamed_count: 1 }, 200)).openapi(pageRoutes.renameSubtreeRoute, (c) => c.json({ renamed_count: 0 }, 200)).openapi(pagePreviewRoutes.previewPageRoute, (c) => c.json(stubPreview, 200)).openapi(pageCollabRoutes.getYjsTokenRoute, (c) => c.json(stubWsToken, 200)).openapi(presenceRoutes.getPresenceTokenRoute, (c) => c.json(stubPresenceToken, 200)).openapi(presenceRoutes.getLikersRoute, (c) => c.json(stubLikers, 200));
7206
+ var lateContractApp = new import_zod_openapi75.OpenAPIHono().openapi(draftRoutes.createDraftRoute, (c) => c.json(stubCreateDraft, 201)).openapi(draftRoutes.listDraftsRoute, (c) => c.json(stubListDrafts, 200)).openapi(draftRoutes.cancelDraftRoute, (c) => c.json(stubCreateDraft, 200)).openapi(autocompleteRoutes.autocompleteUsersRoute, (c) => c.json(stubAutocomplete, 200)).openapi(autocompleteRoutes.autocompletePagesRoute, (c) => c.json(stubAutocomplete, 200)).openapi(attachmentRoutes.getAttachmentUsageRoute, (c) => c.json(stubAttachmentUsage, 200)).openapi(attachmentRoutes.listAttachmentsRoute, (c) => c.json(stubListAttachments, 200)).openapi(attachmentRoutes.addAttachmentRoute, (c) => c.json(stubAddAttachment, 200)).openapi(attachmentRoutes.uploadAttachmentRoute, (c) => c.json(stubUploadAttachment, 200)).openapi(attachmentRoutes.getAttachmentMetaRoute, (c) => c.json(stubAttachmentMeta, 200)).openapi(attachmentRoutes.removeAttachmentRoute, (c) => c.json(stubRemoveAttachment, 200)).openapi(searchRoutes.searchPagesRoute, (c) => c.json(stubSearchPages, 200)).openapi(adminCryptoRoutes.getCryptoStatusRoute, (c) => c.json(stubCryptoStatus, 200)).openapi(adminCryptoRoutes.reencryptAllRoute, (c) => c.json(stubReencrypt, 200)).openapi(notificationRoutes.listNotificationsRoute, (c) => c.json(stubListNotifications, 200)).openapi(notificationRoutes.markAllAsReadRoute, (c) => c.json(stubMarkAllAsRead, 200)).openapi(notificationRoutes.getNotificationsTokenRoute, (c) => c.json(stubNotificationsToken, 200)).openapi(notificationRoutes.getUnreadCountRoute, (c) => c.json(stubNotificationStatus, 200)).openapi(notificationRoutes.openNotificationRoute, (c) => c.json(stubOpenNotification, 200));
7207
+ var adminSettingsContractApp = new import_zod_openapi75.OpenAPIHono().openapi(adminAppRoutes.getAppSettingsRoute, (c) => c.json(stubGetAppSettings, 200)).openapi(adminAppRoutes.updateAppSettingsRoute, (c) => c.json(stubUpdateAppSettings, 200)).openapi(adminAuthRoutes.getAuthSettingsRoute, (c) => c.json(stubAuthSettings, 200)).openapi(adminAuthRoutes.updateAuthSettingsRoute, (c) => c.json(stubAuthSettings, 200)).openapi(adminSecurityRoutes.getSecuritySettingsRoute, (c) => c.json(stubSecuritySettings, 200)).openapi(adminSecurityRoutes.updateSecuritySettingsRoute, (c) => c.json(stubSecuritySettings, 200)).openapi(adminMailRoutes.getMailSettingsRoute, (c) => c.json(stubMailSettings, 200)).openapi(adminMailRoutes.updateMailSettingsRoute, (c) => c.json(stubUpdateMailSettings, 200)).openapi(adminMailRoutes.sendTestMailRoute, (c) => c.json(stubSendTestMail, 200)).openapi(adminStorageRoutes.getStorageStatusRoute, (c) => c.json(stubStorageStatus, 200)).openapi(adminSearchRoutes.getSearchStatusRoute, (c) => c.json(stubSearchStatus, 200));
7208
+ var adminUsersPluginsContractApp = new import_zod_openapi75.OpenAPIHono().openapi(adminUsersRoutes.listUsersRoute, (c) => c.json(stubListAdminUsers, 200)).openapi(adminUsersRoutes.searchUsersByEmailRoute, (c) => c.json(stubSearchAdminUsersByEmail, 200)).openapi(adminUsersRoutes.pendingUsersCountRoute, (c) => c.json(stubPendingUsersCount, 200)).openapi(adminUsersRoutes.inviteUsersRoute, (c) => c.json(stubInviteUsers, 200)).openapi(adminUsersRoutes.editUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.makeAdminRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.removeFromAdminRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.activateUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.suspendUserRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.resetPasswordRoute, (c) => c.json(stubResetPassword, 200)).openapi(adminUsersRoutes.resendInviteRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.updateUserEmailRoute, (c) => c.json(stubAdminUserMutation, 200)).openapi(adminUsersRoutes.deleteUserRoute, (c) => c.json(stubDeleteAdminUser, 200)).openapi(adminPluginsRoutes.listPluginsRoute, (c) => c.json(stubListPlugins, 200)).openapi(adminPluginsRoutes.getPluginConfigRoute, (c) => c.json(stubPluginConfig, 200)).openapi(adminPluginsRoutes.updatePluginConfigRoute, (c) => c.json(stubUpdatePluginConfig, 200)).openapi(adminPluginsRoutes.getPluginReadinessRoute, (c) => c.json(stubPluginReadiness, 200)).openapi(adminPluginsRoutes.clearRenderCacheAllRoute, (c) => c.json(stubClearRenderCache, 200)).openapi(adminPluginsRoutes.clearRenderCachePluginRoute, (c) => c.json(stubClearRenderCache, 200));
7209
+ var oauthContractApp = new import_zod_openapi75.OpenAPIHono().openapi(oauthRoutes.authorizeRoute, (c) => c.json(stubAuthorize, 200)).openapi(oauthRoutes.tokenRoute, (c) => c.json(stubToken, 200)).openapi(oauthRoutes.revokeRoute, (c) => c.json(stubRevoke, 200)).openapi(oauthRoutes.discoveryRoute, (c) => c.json(stubDiscovery, 200)).openapi(oauthRoutes.deviceAuthorizeRoute, (c) => c.json(stubDeviceAuthorize, 200)).openapi(oauthRoutes.deviceInfoRoute, (c) => c.json(stubDeviceInfo, 200)).openapi(oauthRoutes.deviceVerifyRoute, (c) => c.json(stubDeviceVerify, 200)).openapi(oauthRoutes.clientInfoRoute, (c) => c.json(stubClientInfo, 200));
7164
7210
  var createClient = (baseUrl, options = {}) => (0, import_client.hc)(baseUrl, {
7165
7211
  headers: options.headers,
7166
7212
  fetch: options.fetch
7167
7213
  });
7168
7214
 
7169
7215
  // src/schemas/mail-token.ts
7170
- var import_zod_openapi75 = require("@hono/zod-openapi");
7171
- var MailTokenPurposeSchema = import_zod_openapi75.z.enum(["invite", "activate", "reset", "email-change"]);
7172
- var MailTokenPayloadSchema = import_zod_openapi75.z.object({
7216
+ var import_zod_openapi76 = require("@hono/zod-openapi");
7217
+ var MailTokenPurposeSchema = import_zod_openapi76.z.enum(["invite", "activate", "reset", "email-change"]);
7218
+ var MailTokenPayloadSchema = import_zod_openapi76.z.object({
7173
7219
  purpose: MailTokenPurposeSchema,
7174
- userId: import_zod_openapi75.z.string(),
7220
+ userId: import_zod_openapi76.z.string(),
7175
7221
  /** Target address. For `email-change` this is the NEW address. */
7176
- email: import_zod_openapi75.z.string().email(),
7222
+ email: import_zod_openapi76.z.string().email(),
7177
7223
  /**
7178
7224
  * For `email-change`: the account's email at issue time. The confirm
7179
7225
  * endpoint rejects the token unless it still matches, making the token
7180
7226
  * single-use (a stale token cannot revert a later change).
7181
7227
  */
7182
- fromEmail: import_zod_openapi75.z.string().email().optional(),
7228
+ fromEmail: import_zod_openapi76.z.string().email().optional(),
7183
7229
  /**
7184
7230
  * For `reset`: the account's `passwordResetGeneration` at issue time.
7185
7231
  * Consuming the link increments that counter, so the token only matches
@@ -7188,7 +7234,7 @@ var MailTokenPayloadSchema = import_zod_openapi75.z.object({
7188
7234
  * schema because the other purposes don't carry it (and links minted
7189
7235
  * before the claim existed simply no longer match).
7190
7236
  */
7191
- resetGeneration: import_zod_openapi75.z.number().int().nonnegative().optional(),
7237
+ resetGeneration: import_zod_openapi76.z.number().int().nonnegative().optional(),
7192
7238
  /**
7193
7239
  * For `email-change`: the account's `authVersion` at issue time. The
7194
7240
  * confirm endpoint requires it to still match, so a pending address change
@@ -7200,10 +7246,22 @@ var MailTokenPayloadSchema = import_zod_openapi75.z.object({
7200
7246
  * semantics wanted are exactly "the session that asked for this is gone",
7201
7247
  * and that is what every bump of it already means.
7202
7248
  */
7203
- authVersion: import_zod_openapi75.z.number().int().nonnegative().optional(),
7249
+ authVersion: import_zod_openapi76.z.number().int().nonnegative().optional(),
7250
+ /**
7251
+ * For `email-change`: the account's `emailChangeGeneration` at issue time.
7252
+ * Requesting a change increments it, so asking for a different address
7253
+ * supersedes any link still pending — which is what lets a user call off a
7254
+ * change they did not want (one an attacker started with a stolen session,
7255
+ * or one sent to a mistyped address). `authVersion` cannot serve this: it
7256
+ * means "the session that asked is gone", and bumping it on a mere request
7257
+ * would log the user out of their own account for editing their profile.
7258
+ * Optional in the schema for the same reason as the others — links minted
7259
+ * before the claim existed simply no longer match.
7260
+ */
7261
+ emailChangeGeneration: import_zod_openapi76.z.number().int().nonnegative().optional(),
7204
7262
  // iat / exp are injected and verified by the JWT layer.
7205
- iat: import_zod_openapi75.z.number().optional(),
7206
- exp: import_zod_openapi75.z.number().optional()
7263
+ iat: import_zod_openapi76.z.number().optional(),
7264
+ exp: import_zod_openapi76.z.number().optional()
7207
7265
  });
7208
7266
 
7209
7267
  // src/util/html-elements.ts
@@ -7576,6 +7634,9 @@ var WS_CLOSE_CODES = {
7576
7634
  PluginFieldSchema,
7577
7635
  PluginInfoSchema,
7578
7636
  PluginNotFoundErrorSchema,
7637
+ PluginReadinessFieldSchema,
7638
+ PluginReadinessIssueSchema,
7639
+ PluginReadinessResponseSchema,
7579
7640
  PresenceClientMessageSchema,
7580
7641
  PresenceCommentChangedMessageSchema,
7581
7642
  PresenceHeartbeatMessageSchema,
@@ -7687,6 +7748,7 @@ var WS_CLOSE_CODES = {
7687
7748
  UserStatusErrorSchema,
7688
7749
  UserStatusSchema,
7689
7750
  UserSubpagesRequestSchema,
7751
+ UsernameSchema,
7690
7752
  ValidationErrorSchema,
7691
7753
  WS_CLOSE_CODES,
7692
7754
  WatchStatusResponseSchema,
@@ -7757,6 +7819,7 @@ var WS_CLOSE_CODES = {
7757
7819
  getNotificationsTokenRoute,
7758
7820
  getPageRoute,
7759
7821
  getPluginConfigRoute,
7822
+ getPluginReadinessRoute,
7760
7823
  getPresenceTokenRoute,
7761
7824
  getProfileRoute,
7762
7825
  getRevisionRoute,