@crowi/api-contract 2.0.0-alpha.5 → 2.0.0-alpha.7

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
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
+ ALL_CAPABILITIES: () => ALL_CAPABILITIES,
23
24
  ALL_SCOPES: () => ALL_SCOPES,
24
25
  API_SURFACE_VERSION: () => API_SURFACE_VERSION,
25
26
  AccessTokenSchema: () => AccessTokenSchema,
@@ -58,6 +59,8 @@ __export(index_exports, {
58
59
  BacklinkSchema: () => BacklinkSchema,
59
60
  BookmarkResponseSchema: () => BookmarkResponseSchema,
60
61
  BookmarkSchema: () => BookmarkSchema,
62
+ CapabilitySchema: () => CapabilitySchema,
63
+ ClaimPageLinkAccessResponseSchema: () => ClaimPageLinkAccessResponseSchema,
61
64
  ClearRenderCacheResponseSchema: () => ClearRenderCacheResponseSchema,
62
65
  CollabForceReloadMessageSchema: () => CollabForceReloadMessageSchema,
63
66
  CollabSaveErrorSchema: () => CollabSaveErrorSchema,
@@ -81,6 +84,7 @@ __export(index_exports, {
81
84
  DEVICE_CODE_GRANT_TYPE: () => DEVICE_CODE_GRANT_TYPE,
82
85
  DISCOVERY_SCOPES_SUPPORTED: () => DISCOVERY_SCOPES_SUPPORTED,
83
86
  DND_EXTRA_UPLOAD_MIME: () => DND_EXTRA_UPLOAD_MIME,
87
+ DYNAMIC_CAPABILITIES: () => DYNAMIC_CAPABILITIES,
84
88
  DeleteAdminUserResponseSchema: () => DeleteAdminUserResponseSchema,
85
89
  DeleteCommentRequestSchema: () => DeleteCommentRequestSchema,
86
90
  DeleteCommentResponseSchema: () => DeleteCommentResponseSchema,
@@ -207,7 +211,9 @@ __export(index_exports, {
207
211
  PluginInfoSchema: () => PluginInfoSchema,
208
212
  PluginNotFoundErrorSchema: () => PluginNotFoundErrorSchema,
209
213
  PresenceClientMessageSchema: () => PresenceClientMessageSchema,
214
+ PresenceCommentChangedMessageSchema: () => PresenceCommentChangedMessageSchema,
210
215
  PresenceHeartbeatMessageSchema: () => PresenceHeartbeatMessageSchema,
216
+ PresencePageUpdatedMessageSchema: () => PresencePageUpdatedMessageSchema,
211
217
  PresenceServerMessageSchema: () => PresenceServerMessageSchema,
212
218
  PresenceTokenPayloadSchema: () => PresenceTokenPayloadSchema,
213
219
  PresenceTokenResponseSchema: () => PresenceTokenResponseSchema,
@@ -332,6 +338,7 @@ __export(index_exports, {
332
338
  backlinkRoutes: () => backlinkRoutes,
333
339
  bookmarkRoutes: () => bookmarkRoutes,
334
340
  cancelDraftRoute: () => cancelDraftRoute,
341
+ claimPageLinkAccessRoute: () => claimPageLinkAccessRoute,
335
342
  clearRenderCacheAllRoute: () => clearRenderCacheAllRoute,
336
343
  clearRenderCachePluginRoute: () => clearRenderCachePluginRoute,
337
344
  commentRoutes: () => commentRoutes,
@@ -667,7 +674,7 @@ function stripKnownHtmlTags(text) {
667
674
  }
668
675
 
669
676
  // src/contracts/app.ts
670
- var import_zod_openapi4 = require("@hono/zod-openapi");
677
+ var import_zod_openapi5 = require("@hono/zod-openapi");
671
678
 
672
679
  // src/schemas/common.ts
673
680
  var import_zod_openapi2 = require("@hono/zod-openapi");
@@ -762,18 +769,41 @@ var ForbiddenErrorSchema = ApiErrorSchema.extend({
762
769
  });
763
770
 
764
771
  // src/schemas/app.ts
772
+ var import_zod_openapi4 = require("@hono/zod-openapi");
773
+
774
+ // src/schemas/app-capabilities.ts
765
775
  var import_zod_openapi3 = require("@hono/zod-openapi");
766
- var AppInfoResponseSchema = import_zod_openapi3.z.object({
767
- title: import_zod_openapi3.z.string().nullable(),
768
- confidential: import_zod_openapi3.z.string().nullable(),
769
- version: import_zod_openapi3.z.string(),
770
- apiVersion: import_zod_openapi3.z.string(),
771
- capabilities: import_zod_openapi3.z.array(import_zod_openapi3.z.string()),
772
- canSelfRegister: import_zod_openapi3.z.boolean()
776
+ var STATIC_CAPABILITIES = [
777
+ "oauth",
778
+ // The oauth:* tags mirror GRANT_TYPES_SUPPORTED + the S256 PKCE method
779
+ // (schemas/oauth-endpoints.ts / the RFC 8414 discovery doc). Keep in sync.
780
+ "oauth:auth-code",
781
+ "oauth:device",
782
+ "oauth:pkce",
783
+ "pat",
784
+ "pages",
785
+ "comments",
786
+ "bookmarks",
787
+ "attachments",
788
+ "notifications"
789
+ ];
790
+ var DYNAMIC_CAPABILITIES = ["search", "collab", "collab:redis"];
791
+ var ALL_CAPABILITIES = [...STATIC_CAPABILITIES, ...DYNAMIC_CAPABILITIES];
792
+ var CapabilitySchema = import_zod_openapi3.z.enum(ALL_CAPABILITIES).openapi("Capability");
793
+ var API_SURFACE_VERSION = "v2";
794
+
795
+ // src/schemas/app.ts
796
+ var AppInfoResponseSchema = import_zod_openapi4.z.object({
797
+ title: import_zod_openapi4.z.string().nullable(),
798
+ confidential: import_zod_openapi4.z.string().nullable(),
799
+ version: import_zod_openapi4.z.string(),
800
+ apiVersion: import_zod_openapi4.z.string(),
801
+ capabilities: import_zod_openapi4.z.array(CapabilitySchema),
802
+ canSelfRegister: import_zod_openapi4.z.boolean()
773
803
  });
774
804
 
775
805
  // src/contracts/app.ts
776
- var getAppInfoRoute = (0, import_zod_openapi4.createRoute)({
806
+ var getAppInfoRoute = (0, import_zod_openapi5.createRoute)({
777
807
  method: "get",
778
808
  path: "/app/info",
779
809
  tags: ["app"],
@@ -800,29 +830,29 @@ var getAppInfoRoute = (0, import_zod_openapi4.createRoute)({
800
830
  var appRoutes = { getAppInfoRoute };
801
831
 
802
832
  // src/contracts/installer.ts
803
- var import_zod_openapi6 = require("@hono/zod-openapi");
833
+ var import_zod_openapi7 = require("@hono/zod-openapi");
804
834
 
805
835
  // src/schemas/installer.ts
806
- var import_zod_openapi5 = require("@hono/zod-openapi");
807
- var InstallerStatusResponseSchema = import_zod_openapi5.z.object({
808
- status: import_zod_openapi5.z.enum(["installer_required", "already_installed"])
809
- });
810
- var CreateAdminRequestSchema = import_zod_openapi5.z.object({
811
- registerForm: import_zod_openapi5.z.object({
812
- username: import_zod_openapi5.z.string().min(1).regex(/^[\da-zA-Z\-_.]+$/, "username may only contain letters, digits, hyphens, underscores, and dots"),
813
- name: import_zod_openapi5.z.string().min(1),
814
- email: import_zod_openapi5.z.string().email(),
815
- password: import_zod_openapi5.z.string().min(6).regex(/^[\x20-\x7F]{6,}$/, "password must be 6+ printable ASCII characters")
836
+ var import_zod_openapi6 = require("@hono/zod-openapi");
837
+ var InstallerStatusResponseSchema = import_zod_openapi6.z.object({
838
+ status: import_zod_openapi6.z.enum(["installer_required", "already_installed"])
839
+ });
840
+ var CreateAdminRequestSchema = import_zod_openapi6.z.object({
841
+ registerForm: import_zod_openapi6.z.object({
842
+ username: import_zod_openapi6.z.string().min(1).regex(/^[\da-zA-Z\-_.]+$/, "username may only contain letters, digits, hyphens, underscores, and dots"),
843
+ name: import_zod_openapi6.z.string().min(1),
844
+ email: import_zod_openapi6.z.string().email(),
845
+ password: import_zod_openapi6.z.string().min(6).regex(/^[\x20-\x7F]{6,}$/, "password must be 6+ printable ASCII characters")
816
846
  })
817
847
  });
818
- var CreateAdminResponseSchema = import_zod_openapi5.z.object({
819
- status: import_zod_openapi5.z.enum(["ok", "error"]),
820
- message: import_zod_openapi5.z.string().optional(),
821
- errors: import_zod_openapi5.z.array(import_zod_openapi5.z.string()).optional()
848
+ var CreateAdminResponseSchema = import_zod_openapi6.z.object({
849
+ status: import_zod_openapi6.z.enum(["ok", "error"]),
850
+ message: import_zod_openapi6.z.string().optional(),
851
+ errors: import_zod_openapi6.z.array(import_zod_openapi6.z.string()).optional()
822
852
  });
823
853
 
824
854
  // src/contracts/installer.ts
825
- var getInstallerStatusRoute = (0, import_zod_openapi6.createRoute)({
855
+ var getInstallerStatusRoute = (0, import_zod_openapi7.createRoute)({
826
856
  method: "get",
827
857
  path: "/installer",
828
858
  tags: ["installer"],
@@ -846,7 +876,7 @@ var getInstallerStatusRoute = (0, import_zod_openapi6.createRoute)({
846
876
  }
847
877
  }
848
878
  });
849
- var createAdminRoute = (0, import_zod_openapi6.createRoute)({
879
+ var createAdminRoute = (0, import_zod_openapi7.createRoute)({
850
880
  method: "post",
851
881
  path: "/installer/createAdmin",
852
882
  tags: ["installer"],
@@ -890,56 +920,56 @@ var createAdminRoute = (0, import_zod_openapi6.createRoute)({
890
920
  var installerRoutes = { getInstallerStatusRoute, createAdminRoute };
891
921
 
892
922
  // src/contracts/tokenAuth.ts
893
- var import_zod_openapi8 = require("@hono/zod-openapi");
923
+ var import_zod_openapi9 = require("@hono/zod-openapi");
894
924
 
895
925
  // src/schemas/auth.ts
896
- var import_zod_openapi7 = require("@hono/zod-openapi");
897
- var TokenAuthLoginRequestSchema = import_zod_openapi7.z.object({
898
- email: import_zod_openapi7.z.string().email(),
899
- password: import_zod_openapi7.z.string().min(6)
900
- });
901
- var TokenAuthResponseSchema = import_zod_openapi7.z.object({
902
- accessToken: import_zod_openapi7.z.string(),
903
- refreshToken: import_zod_openapi7.z.string(),
904
- expiresIn: import_zod_openapi7.z.number(),
926
+ var import_zod_openapi8 = require("@hono/zod-openapi");
927
+ var TokenAuthLoginRequestSchema = import_zod_openapi8.z.object({
928
+ email: import_zod_openapi8.z.string().email(),
929
+ password: import_zod_openapi8.z.string().min(6)
930
+ });
931
+ var TokenAuthResponseSchema = import_zod_openapi8.z.object({
932
+ accessToken: import_zod_openapi8.z.string(),
933
+ refreshToken: import_zod_openapi8.z.string(),
934
+ expiresIn: import_zod_openapi8.z.number(),
905
935
  // seconds until expiration
906
- user: import_zod_openapi7.z.object({
907
- id: import_zod_openapi7.z.string(),
908
- username: import_zod_openapi7.z.string(),
909
- email: import_zod_openapi7.z.string().email(),
910
- name: import_zod_openapi7.z.string(),
911
- image: import_zod_openapi7.z.string().optional(),
912
- admin: import_zod_openapi7.z.boolean().optional()
936
+ user: import_zod_openapi8.z.object({
937
+ id: import_zod_openapi8.z.string(),
938
+ username: import_zod_openapi8.z.string(),
939
+ email: import_zod_openapi8.z.string().email(),
940
+ name: import_zod_openapi8.z.string(),
941
+ image: import_zod_openapi8.z.string().optional(),
942
+ admin: import_zod_openapi8.z.boolean().optional()
913
943
  })
914
944
  });
915
- var RefreshTokenRequestSchema = import_zod_openapi7.z.object({
916
- refreshToken: import_zod_openapi7.z.string()
945
+ var RefreshTokenRequestSchema = import_zod_openapi8.z.object({
946
+ refreshToken: import_zod_openapi8.z.string()
917
947
  });
918
- var TokenAuthRegisterRequestSchema = import_zod_openapi7.z.object({
919
- username: import_zod_openapi7.z.string(),
920
- name: import_zod_openapi7.z.string(),
921
- email: import_zod_openapi7.z.string().email(),
922
- password: import_zod_openapi7.z.string().min(6)
948
+ var TokenAuthRegisterRequestSchema = import_zod_openapi8.z.object({
949
+ username: import_zod_openapi8.z.string(),
950
+ name: import_zod_openapi8.z.string(),
951
+ email: import_zod_openapi8.z.string().email(),
952
+ password: import_zod_openapi8.z.string().min(6)
923
953
  });
924
- var RegisterPendingResponseSchema = import_zod_openapi7.z.object({
925
- status: import_zod_openapi7.z.enum(["confirmation_required", "approval_required"])
954
+ var RegisterPendingResponseSchema = import_zod_openapi8.z.object({
955
+ status: import_zod_openapi8.z.enum(["confirmation_required", "approval_required"])
926
956
  });
927
957
 
928
958
  // src/contracts/tokenAuth.ts
929
- var TokenLogoutResponseSchema = import_zod_openapi8.z.object({ message: import_zod_openapi8.z.string() });
930
- var TokenMeResponseSchema = import_zod_openapi8.z.object({
931
- user: import_zod_openapi8.z.object({
932
- id: import_zod_openapi8.z.string(),
933
- username: import_zod_openapi8.z.string(),
934
- email: import_zod_openapi8.z.string().email(),
935
- name: import_zod_openapi8.z.string(),
936
- image: import_zod_openapi8.z.string().optional(),
937
- status: import_zod_openapi8.z.number(),
938
- admin: import_zod_openapi8.z.boolean().optional(),
939
- createdAt: import_zod_openapi8.z.string()
959
+ var TokenLogoutResponseSchema = import_zod_openapi9.z.object({ message: import_zod_openapi9.z.string() });
960
+ var TokenMeResponseSchema = import_zod_openapi9.z.object({
961
+ user: import_zod_openapi9.z.object({
962
+ id: import_zod_openapi9.z.string(),
963
+ username: import_zod_openapi9.z.string(),
964
+ email: import_zod_openapi9.z.string().email(),
965
+ name: import_zod_openapi9.z.string(),
966
+ image: import_zod_openapi9.z.string().optional(),
967
+ status: import_zod_openapi9.z.number(),
968
+ admin: import_zod_openapi9.z.boolean().optional(),
969
+ createdAt: import_zod_openapi9.z.string()
940
970
  })
941
971
  });
942
- var tokenLoginRoute = (0, import_zod_openapi8.createRoute)({
972
+ var tokenLoginRoute = (0, import_zod_openapi9.createRoute)({
943
973
  method: "post",
944
974
  path: "/auth/login",
945
975
  tags: ["tokenAuth"],
@@ -976,7 +1006,7 @@ var tokenLoginRoute = (0, import_zod_openapi8.createRoute)({
976
1006
  }
977
1007
  }
978
1008
  });
979
- var tokenRegisterRoute = (0, import_zod_openapi8.createRoute)({
1009
+ var tokenRegisterRoute = (0, import_zod_openapi9.createRoute)({
980
1010
  method: "post",
981
1011
  path: "/auth/register",
982
1012
  tags: ["tokenAuth"],
@@ -1017,7 +1047,7 @@ var tokenRegisterRoute = (0, import_zod_openapi8.createRoute)({
1017
1047
  }
1018
1048
  }
1019
1049
  });
1020
- var tokenRefreshRoute = (0, import_zod_openapi8.createRoute)({
1050
+ var tokenRefreshRoute = (0, import_zod_openapi9.createRoute)({
1021
1051
  method: "post",
1022
1052
  path: "/auth/refresh",
1023
1053
  tags: ["tokenAuth"],
@@ -1054,7 +1084,7 @@ var tokenRefreshRoute = (0, import_zod_openapi8.createRoute)({
1054
1084
  }
1055
1085
  }
1056
1086
  });
1057
- var tokenLogoutRoute = (0, import_zod_openapi8.createRoute)({
1087
+ var tokenLogoutRoute = (0, import_zod_openapi9.createRoute)({
1058
1088
  method: "post",
1059
1089
  path: "/auth/logout",
1060
1090
  tags: ["tokenAuth"],
@@ -1064,7 +1094,7 @@ var tokenLogoutRoute = (0, import_zod_openapi8.createRoute)({
1064
1094
  body: {
1065
1095
  content: {
1066
1096
  "application/json": {
1067
- schema: import_zod_openapi8.z.object({ refreshToken: import_zod_openapi8.z.string().optional() })
1097
+ schema: import_zod_openapi9.z.object({ refreshToken: import_zod_openapi9.z.string().optional() })
1068
1098
  }
1069
1099
  }
1070
1100
  }
@@ -1084,7 +1114,7 @@ var tokenLogoutRoute = (0, import_zod_openapi8.createRoute)({
1084
1114
  }
1085
1115
  }
1086
1116
  });
1087
- var tokenMeRoute = (0, import_zod_openapi8.createRoute)({
1117
+ var tokenMeRoute = (0, import_zod_openapi9.createRoute)({
1088
1118
  method: "get",
1089
1119
  path: "/auth/me",
1090
1120
  tags: ["tokenAuth"],
@@ -1114,22 +1144,22 @@ var tokenAuthRoutes = {
1114
1144
  };
1115
1145
 
1116
1146
  // src/contracts/inviteAccept.ts
1117
- var import_zod_openapi10 = require("@hono/zod-openapi");
1147
+ var import_zod_openapi11 = require("@hono/zod-openapi");
1118
1148
 
1119
1149
  // src/schemas/inviteAccept.ts
1120
- var import_zod_openapi9 = require("@hono/zod-openapi");
1121
- var InviteAcceptRequestSchema = import_zod_openapi9.z.object({
1122
- token: import_zod_openapi9.z.string(),
1123
- username: import_zod_openapi9.z.string().min(1),
1124
- name: import_zod_openapi9.z.string().min(1),
1125
- password: import_zod_openapi9.z.string().min(6)
1150
+ var import_zod_openapi10 = require("@hono/zod-openapi");
1151
+ var InviteAcceptRequestSchema = import_zod_openapi10.z.object({
1152
+ token: import_zod_openapi10.z.string(),
1153
+ username: import_zod_openapi10.z.string().min(1),
1154
+ name: import_zod_openapi10.z.string().min(1),
1155
+ password: import_zod_openapi10.z.string().min(6)
1126
1156
  });
1127
- var InvitePreviewResponseSchema = import_zod_openapi9.z.object({
1128
- email: import_zod_openapi9.z.string().email()
1157
+ var InvitePreviewResponseSchema = import_zod_openapi10.z.object({
1158
+ email: import_zod_openapi10.z.string().email()
1129
1159
  });
1130
1160
 
1131
1161
  // src/contracts/inviteAccept.ts
1132
- var invitePreviewRoute = (0, import_zod_openapi10.createRoute)({
1162
+ var invitePreviewRoute = (0, import_zod_openapi11.createRoute)({
1133
1163
  method: "get",
1134
1164
  path: "/invite/accept",
1135
1165
  tags: ["inviteAccept"],
@@ -1156,7 +1186,7 @@ var invitePreviewRoute = (0, import_zod_openapi10.createRoute)({
1156
1186
  }
1157
1187
  }
1158
1188
  });
1159
- var acceptInviteRoute = (0, import_zod_openapi10.createRoute)({
1189
+ var acceptInviteRoute = (0, import_zod_openapi11.createRoute)({
1160
1190
  method: "post",
1161
1191
  path: "/invite/accept",
1162
1192
  tags: ["inviteAccept"],
@@ -1199,23 +1229,23 @@ var inviteAcceptRoutes = {
1199
1229
  };
1200
1230
 
1201
1231
  // src/contracts/passwordReset.ts
1202
- var import_zod_openapi12 = require("@hono/zod-openapi");
1232
+ var import_zod_openapi13 = require("@hono/zod-openapi");
1203
1233
 
1204
1234
  // src/schemas/passwordReset.ts
1205
- var import_zod_openapi11 = require("@hono/zod-openapi");
1206
- var ForgotPasswordRequestSchema = import_zod_openapi11.z.object({
1207
- email: import_zod_openapi11.z.string().email()
1235
+ var import_zod_openapi12 = require("@hono/zod-openapi");
1236
+ var ForgotPasswordRequestSchema = import_zod_openapi12.z.object({
1237
+ email: import_zod_openapi12.z.string().email()
1208
1238
  });
1209
- var ForgotPasswordResponseSchema = import_zod_openapi11.z.object({
1210
- ok: import_zod_openapi11.z.literal(true)
1239
+ var ForgotPasswordResponseSchema = import_zod_openapi12.z.object({
1240
+ ok: import_zod_openapi12.z.literal(true)
1211
1241
  });
1212
- var ResetPasswordRequestSchema = import_zod_openapi11.z.object({
1213
- token: import_zod_openapi11.z.string(),
1214
- password: import_zod_openapi11.z.string().min(6)
1242
+ var ResetPasswordRequestSchema = import_zod_openapi12.z.object({
1243
+ token: import_zod_openapi12.z.string(),
1244
+ password: import_zod_openapi12.z.string().min(6)
1215
1245
  });
1216
1246
 
1217
1247
  // src/contracts/passwordReset.ts
1218
- var forgotPasswordRoute = (0, import_zod_openapi12.createRoute)({
1248
+ var forgotPasswordRoute = (0, import_zod_openapi13.createRoute)({
1219
1249
  method: "post",
1220
1250
  path: "/auth/forgot-password",
1221
1251
  tags: ["passwordReset"],
@@ -1240,7 +1270,7 @@ var forgotPasswordRoute = (0, import_zod_openapi12.createRoute)({
1240
1270
  }
1241
1271
  }
1242
1272
  });
1243
- var validateResetTokenRoute = (0, import_zod_openapi12.createRoute)({
1273
+ var validateResetTokenRoute = (0, import_zod_openapi13.createRoute)({
1244
1274
  method: "get",
1245
1275
  path: "/auth/reset-password",
1246
1276
  tags: ["passwordReset"],
@@ -1263,7 +1293,7 @@ var validateResetTokenRoute = (0, import_zod_openapi12.createRoute)({
1263
1293
  }
1264
1294
  }
1265
1295
  });
1266
- var selfResetPasswordRoute = (0, import_zod_openapi12.createRoute)({
1296
+ var selfResetPasswordRoute = (0, import_zod_openapi13.createRoute)({
1267
1297
  method: "post",
1268
1298
  path: "/auth/reset-password",
1269
1299
  tags: ["passwordReset"],
@@ -1303,19 +1333,19 @@ var passwordResetRoutes = {
1303
1333
  };
1304
1334
 
1305
1335
  // src/contracts/activation.ts
1306
- var import_zod_openapi14 = require("@hono/zod-openapi");
1336
+ var import_zod_openapi15 = require("@hono/zod-openapi");
1307
1337
 
1308
1338
  // src/schemas/activation.ts
1309
- var import_zod_openapi13 = require("@hono/zod-openapi");
1310
- var ActivateRequestSchema = import_zod_openapi13.z.object({
1311
- token: import_zod_openapi13.z.string()
1339
+ var import_zod_openapi14 = require("@hono/zod-openapi");
1340
+ var ActivateRequestSchema = import_zod_openapi14.z.object({
1341
+ token: import_zod_openapi14.z.string()
1312
1342
  });
1313
- var ActivateValidationResponseSchema = import_zod_openapi13.z.object({
1314
- ok: import_zod_openapi13.z.literal(true)
1343
+ var ActivateValidationResponseSchema = import_zod_openapi14.z.object({
1344
+ ok: import_zod_openapi14.z.literal(true)
1315
1345
  });
1316
1346
 
1317
1347
  // src/contracts/activation.ts
1318
- var validateActivationTokenRoute = (0, import_zod_openapi14.createRoute)({
1348
+ var validateActivationTokenRoute = (0, import_zod_openapi15.createRoute)({
1319
1349
  method: "get",
1320
1350
  path: "/auth/activate",
1321
1351
  tags: ["activation"],
@@ -1338,7 +1368,7 @@ var validateActivationTokenRoute = (0, import_zod_openapi14.createRoute)({
1338
1368
  }
1339
1369
  }
1340
1370
  });
1341
- var activateAccountRoute = (0, import_zod_openapi14.createRoute)({
1371
+ var activateAccountRoute = (0, import_zod_openapi15.createRoute)({
1342
1372
  method: "post",
1343
1373
  path: "/auth/activate",
1344
1374
  tags: ["activation"],
@@ -1373,21 +1403,21 @@ var activationRoutes = {
1373
1403
  };
1374
1404
 
1375
1405
  // src/contracts/emailChange.ts
1376
- var import_zod_openapi16 = require("@hono/zod-openapi");
1406
+ var import_zod_openapi17 = require("@hono/zod-openapi");
1377
1407
 
1378
1408
  // src/schemas/emailChange.ts
1379
- var import_zod_openapi15 = require("@hono/zod-openapi");
1380
- var ConfirmEmailChangeRequestSchema = import_zod_openapi15.z.object({
1381
- token: import_zod_openapi15.z.string()
1409
+ var import_zod_openapi16 = require("@hono/zod-openapi");
1410
+ var ConfirmEmailChangeRequestSchema = import_zod_openapi16.z.object({
1411
+ token: import_zod_openapi16.z.string()
1382
1412
  });
1383
- var ConfirmEmailChangeResponseSchema = import_zod_openapi15.z.object({
1384
- ok: import_zod_openapi15.z.literal(true),
1413
+ var ConfirmEmailChangeResponseSchema = import_zod_openapi16.z.object({
1414
+ ok: import_zod_openapi16.z.literal(true),
1385
1415
  /** The newly-confirmed email address. */
1386
- email: import_zod_openapi15.z.string().email()
1416
+ email: import_zod_openapi16.z.string().email()
1387
1417
  });
1388
1418
 
1389
1419
  // src/contracts/emailChange.ts
1390
- var validateEmailChangeTokenRoute = (0, import_zod_openapi16.createRoute)({
1420
+ var validateEmailChangeTokenRoute = (0, import_zod_openapi17.createRoute)({
1391
1421
  method: "get",
1392
1422
  path: "/auth/confirm-email-change",
1393
1423
  tags: ["emailChange"],
@@ -1410,7 +1440,7 @@ var validateEmailChangeTokenRoute = (0, import_zod_openapi16.createRoute)({
1410
1440
  }
1411
1441
  }
1412
1442
  });
1413
- var confirmEmailChangeRoute = (0, import_zod_openapi16.createRoute)({
1443
+ var confirmEmailChangeRoute = (0, import_zod_openapi17.createRoute)({
1414
1444
  method: "post",
1415
1445
  path: "/auth/confirm-email-change",
1416
1446
  tags: ["emailChange"],
@@ -1449,19 +1479,19 @@ var emailChangeRoutes = {
1449
1479
  };
1450
1480
 
1451
1481
  // src/contracts/me.ts
1452
- var import_zod_openapi21 = require("@hono/zod-openapi");
1482
+ var import_zod_openapi22 = require("@hono/zod-openapi");
1453
1483
 
1454
1484
  // src/schemas/me.ts
1455
- var import_zod_openapi20 = require("@hono/zod-openapi");
1485
+ var import_zod_openapi21 = require("@hono/zod-openapi");
1456
1486
 
1457
1487
  // src/schemas/page.ts
1458
- var import_zod_openapi19 = require("@hono/zod-openapi");
1488
+ var import_zod_openapi20 = require("@hono/zod-openapi");
1459
1489
 
1460
1490
  // src/schemas/collab.ts
1461
- var import_zod_openapi18 = require("@hono/zod-openapi");
1491
+ var import_zod_openapi19 = require("@hono/zod-openapi");
1462
1492
 
1463
1493
  // src/schemas/userPublic.ts
1464
- var import_zod_openapi17 = require("@hono/zod-openapi");
1494
+ var import_zod_openapi18 = require("@hono/zod-openapi");
1465
1495
  var UserPublicStatus = {
1466
1496
  REGISTERED: 1,
1467
1497
  ACTIVE: 2,
@@ -1469,64 +1499,64 @@ var UserPublicStatus = {
1469
1499
  DELETED: 4,
1470
1500
  INVITED: 5
1471
1501
  };
1472
- var UserPublicStatusSchema = import_zod_openapi17.z.nativeEnum(UserPublicStatus);
1473
- var UserPublicSchema = import_zod_openapi17.z.object({
1474
- _id: import_zod_openapi17.z.string(),
1475
- id: import_zod_openapi17.z.string().optional(),
1502
+ var UserPublicStatusSchema = import_zod_openapi18.z.nativeEnum(UserPublicStatus);
1503
+ var UserPublicSchema = import_zod_openapi18.z.object({
1504
+ _id: import_zod_openapi18.z.string(),
1505
+ id: import_zod_openapi18.z.string().optional(),
1476
1506
  // for compatibility (virtual field)
1477
- username: import_zod_openapi17.z.string(),
1478
- name: import_zod_openapi17.z.string(),
1479
- email: import_zod_openapi17.z.string().email(),
1480
- image: import_zod_openapi17.z.string().nullable().optional(),
1481
- introduction: import_zod_openapi17.z.string().optional(),
1482
- createdAt: import_zod_openapi17.z.string(),
1483
- admin: import_zod_openapi17.z.boolean().optional(),
1507
+ username: import_zod_openapi18.z.string(),
1508
+ name: import_zod_openapi18.z.string(),
1509
+ email: import_zod_openapi18.z.string().email(),
1510
+ image: import_zod_openapi18.z.string().nullable().optional(),
1511
+ introduction: import_zod_openapi18.z.string().optional(),
1512
+ createdAt: import_zod_openapi18.z.string(),
1513
+ admin: import_zod_openapi18.z.boolean().optional(),
1484
1514
  status: UserPublicStatusSchema.optional()
1485
1515
  });
1486
1516
 
1487
1517
  // src/schemas/collab.ts
1488
1518
  var ContributorRefSchema = UserPublicSchema;
1489
- var RevisionTypeSchema = import_zod_openapi18.z.enum(["snapshot", "incremental"]);
1490
- var WsTokenResponseSchema = import_zod_openapi18.z.object({
1491
- wsToken: import_zod_openapi18.z.string(),
1492
- pageId: import_zod_openapi18.z.string(),
1493
- expiresAt: import_zod_openapi18.z.string(),
1494
- readonly: import_zod_openapi18.z.boolean()
1495
- });
1496
- var WsTokenPayloadSchema = import_zod_openapi18.z.object({
1497
- userId: import_zod_openapi18.z.string(),
1498
- pageId: import_zod_openapi18.z.string(),
1499
- readonly: import_zod_openapi18.z.boolean(),
1500
- iat: import_zod_openapi18.z.number().int(),
1501
- exp: import_zod_openapi18.z.number().int()
1502
- });
1503
- var CollabSaveMessageSchema = import_zod_openapi18.z.object({
1504
- kind: import_zod_openapi18.z.literal("crowi:save"),
1505
- message: import_zod_openapi18.z.string().optional()
1506
- });
1507
- var CollabSaveOkSchema = import_zod_openapi18.z.object({
1508
- kind: import_zod_openapi18.z.literal("crowi:save-ok"),
1509
- revisionId: import_zod_openapi18.z.string()
1510
- });
1511
- var CollabSaveErrorSchema = import_zod_openapi18.z.object({
1512
- kind: import_zod_openapi18.z.literal("crowi:save-error"),
1513
- code: import_zod_openapi18.z.string(),
1514
- message: import_zod_openapi18.z.string()
1515
- });
1516
- var CollabForceReloadMessageSchema = import_zod_openapi18.z.object({
1517
- kind: import_zod_openapi18.z.literal("crowi:force-reload"),
1518
- reason: import_zod_openapi18.z.string().optional()
1519
+ var RevisionTypeSchema = import_zod_openapi19.z.enum(["snapshot", "incremental"]);
1520
+ var WsTokenResponseSchema = import_zod_openapi19.z.object({
1521
+ wsToken: import_zod_openapi19.z.string(),
1522
+ pageId: import_zod_openapi19.z.string(),
1523
+ expiresAt: import_zod_openapi19.z.string(),
1524
+ readonly: import_zod_openapi19.z.boolean()
1525
+ });
1526
+ var WsTokenPayloadSchema = import_zod_openapi19.z.object({
1527
+ userId: import_zod_openapi19.z.string(),
1528
+ pageId: import_zod_openapi19.z.string(),
1529
+ readonly: import_zod_openapi19.z.boolean(),
1530
+ iat: import_zod_openapi19.z.number().int(),
1531
+ exp: import_zod_openapi19.z.number().int()
1532
+ });
1533
+ var CollabSaveMessageSchema = import_zod_openapi19.z.object({
1534
+ kind: import_zod_openapi19.z.literal("crowi:save"),
1535
+ message: import_zod_openapi19.z.string().optional()
1536
+ });
1537
+ var CollabSaveOkSchema = import_zod_openapi19.z.object({
1538
+ kind: import_zod_openapi19.z.literal("crowi:save-ok"),
1539
+ revisionId: import_zod_openapi19.z.string()
1540
+ });
1541
+ var CollabSaveErrorSchema = import_zod_openapi19.z.object({
1542
+ kind: import_zod_openapi19.z.literal("crowi:save-error"),
1543
+ code: import_zod_openapi19.z.string(),
1544
+ message: import_zod_openapi19.z.string()
1545
+ });
1546
+ var CollabForceReloadMessageSchema = import_zod_openapi19.z.object({
1547
+ kind: import_zod_openapi19.z.literal("crowi:force-reload"),
1548
+ reason: import_zod_openapi19.z.string().optional()
1519
1549
  });
1520
1550
 
1521
1551
  // src/schemas/page.ts
1522
- var PageGrantSchema = import_zod_openapi19.z.enum(["1", "2", "3", "4"]).transform((val) => Number(val));
1552
+ var PageGrantSchema = import_zod_openapi20.z.enum(["1", "2", "3", "4"]).transform((val) => Number(val));
1523
1553
  var PageGrantEnum = {
1524
1554
  PUBLIC: 1,
1525
1555
  RESTRICTED: 2,
1526
1556
  SPECIFIED: 3,
1527
1557
  OWNER: 4
1528
1558
  };
1529
- var PageStatusSchema = import_zod_openapi19.z.enum(["wip", "published", "deleted", "deprecated", "draft"]);
1559
+ var PageStatusSchema = import_zod_openapi20.z.enum(["wip", "published", "deleted", "deprecated", "draft"]);
1530
1560
  var PageStatusEnum = {
1531
1561
  WIP: "wip",
1532
1562
  PUBLISHED: "published",
@@ -1534,51 +1564,51 @@ var PageStatusEnum = {
1534
1564
  DEPRECATED: "deprecated",
1535
1565
  DRAFT: "draft"
1536
1566
  };
1537
- var PageTypeSchema = import_zod_openapi19.z.enum(["portal", "user", "public"]);
1567
+ var PageTypeSchema = import_zod_openapi20.z.enum(["portal", "user", "public"]);
1538
1568
  var PageTypeEnum = {
1539
1569
  PORTAL: "portal",
1540
1570
  USER: "user",
1541
1571
  PUBLIC: "public"
1542
1572
  };
1543
- var PageUserSchema = import_zod_openapi19.z.object({
1544
- _id: import_zod_openapi19.z.string(),
1545
- id: import_zod_openapi19.z.string().optional(),
1573
+ var PageUserSchema = import_zod_openapi20.z.object({
1574
+ _id: import_zod_openapi20.z.string(),
1575
+ id: import_zod_openapi20.z.string().optional(),
1546
1576
  // for compatibility
1547
- username: import_zod_openapi19.z.string(),
1548
- name: import_zod_openapi19.z.string(),
1549
- email: import_zod_openapi19.z.string().email(),
1550
- image: import_zod_openapi19.z.string().nullable().optional(),
1551
- createdAt: import_zod_openapi19.z.string()
1552
- });
1553
- var TocEntrySchema = import_zod_openapi19.z.object({
1554
- level: import_zod_openapi19.z.number().int().min(1).max(6),
1555
- text: import_zod_openapi19.z.string(),
1556
- anchorId: import_zod_openapi19.z.string()
1557
- });
1558
- var WikiLinkSchema = import_zod_openapi19.z.object({
1577
+ username: import_zod_openapi20.z.string(),
1578
+ name: import_zod_openapi20.z.string(),
1579
+ email: import_zod_openapi20.z.string().email(),
1580
+ image: import_zod_openapi20.z.string().nullable().optional(),
1581
+ createdAt: import_zod_openapi20.z.string()
1582
+ });
1583
+ var TocEntrySchema = import_zod_openapi20.z.object({
1584
+ level: import_zod_openapi20.z.number().int().min(1).max(6),
1585
+ text: import_zod_openapi20.z.string(),
1586
+ anchorId: import_zod_openapi20.z.string()
1587
+ });
1588
+ var WikiLinkSchema = import_zod_openapi20.z.object({
1559
1589
  /** Verbatim source between the `[[` `]]` (no surrounding brackets). */
1560
- raw: import_zod_openapi19.z.string(),
1590
+ raw: import_zod_openapi20.z.string(),
1561
1591
  /** Normalised target (left of the `|`, fragment trimmed for resolution). */
1562
- target: import_zod_openapi19.z.string(),
1592
+ target: import_zod_openapi20.z.string(),
1563
1593
  /** Optional pipe-aliased display text (right of the `|`). */
1564
- displayText: import_zod_openapi19.z.string().optional()
1565
- });
1566
- var MentionSchema = import_zod_openapi19.z.object({
1567
- username: import_zod_openapi19.z.string()
1568
- });
1569
- var RevisionMetaSchemaShape = import_zod_openapi19.z.object({
1570
- toc: import_zod_openapi19.z.array(TocEntrySchema).optional(),
1571
- wikiLinks: import_zod_openapi19.z.array(WikiLinkSchema).optional(),
1572
- mentions: import_zod_openapi19.z.array(MentionSchema).optional(),
1573
- codeBlockLanguages: import_zod_openapi19.z.array(import_zod_openapi19.z.string()).optional()
1574
- });
1575
- var RevisionSchema = import_zod_openapi19.z.object({
1576
- _id: import_zod_openapi19.z.string(),
1577
- path: import_zod_openapi19.z.string(),
1578
- body: import_zod_openapi19.z.string(),
1579
- format: import_zod_openapi19.z.string().default("markdown"),
1594
+ displayText: import_zod_openapi20.z.string().optional()
1595
+ });
1596
+ var MentionSchema = import_zod_openapi20.z.object({
1597
+ username: import_zod_openapi20.z.string()
1598
+ });
1599
+ var RevisionMetaSchemaShape = import_zod_openapi20.z.object({
1600
+ toc: import_zod_openapi20.z.array(TocEntrySchema).optional(),
1601
+ wikiLinks: import_zod_openapi20.z.array(WikiLinkSchema).optional(),
1602
+ mentions: import_zod_openapi20.z.array(MentionSchema).optional(),
1603
+ codeBlockLanguages: import_zod_openapi20.z.array(import_zod_openapi20.z.string()).optional()
1604
+ });
1605
+ var RevisionSchema = import_zod_openapi20.z.object({
1606
+ _id: import_zod_openapi20.z.string(),
1607
+ path: import_zod_openapi20.z.string(),
1608
+ body: import_zod_openapi20.z.string(),
1609
+ format: import_zod_openapi20.z.string().default("markdown"),
1580
1610
  author: PageUserSchema.nullable().optional(),
1581
- createdAt: import_zod_openapi19.z.string(),
1611
+ createdAt: import_zod_openapi20.z.string(),
1582
1612
  meta: RevisionMetaSchemaShape.optional(),
1583
1613
  // RFC-0002 Phase 3: transformed mdast (parse + core plugins +
1584
1614
  // shiki) for the web client to render without re-parsing the body.
@@ -1586,42 +1616,42 @@ var RevisionSchema = import_zod_openapi19.z.object({
1586
1616
  // spec to maintain a strict Zod schema for. Only single-page detail
1587
1617
  // (`getPage`) and single-revision detail (`getRevision`) emit it;
1588
1618
  // list endpoints skip it for payload weight.
1589
- renderedAst: import_zod_openapi19.z.unknown().optional(),
1619
+ renderedAst: import_zod_openapi20.z.unknown().optional(),
1590
1620
  // RFC-0002 round 3.1: semver of the renderer pipeline that produced
1591
1621
  // `renderedAst`. The read path uses this to detect stale entries
1592
1622
  // (rebuilt by `renderer:rebuild` once RFC-0008 lands). Absent on
1593
1623
  // revisions saved before this field was introduced.
1594
- rendererVersion: import_zod_openapi19.z.string().optional(),
1624
+ rendererVersion: import_zod_openapi20.z.string().optional(),
1595
1625
  // RFC-0003 collaborative-save fields. All optional; v1.x revisions
1596
1626
  // emit none of them. See `packages/api/src/models/revision.ts` for
1597
1627
  // semantics. The list-page endpoint currently does not surface
1598
1628
  // these — they only appear on the Phase 5+ checkpoint Revisions
1599
1629
  // produced by Hocuspocus and on the single-revision detail route.
1600
- parentRevisionId: import_zod_openapi19.z.string().nullable().optional(),
1630
+ parentRevisionId: import_zod_openapi20.z.string().nullable().optional(),
1601
1631
  type: RevisionTypeSchema.optional(),
1602
- savedBy: import_zod_openapi19.z.union([import_zod_openapi19.z.string(), PageUserSchema]).nullable().optional(),
1603
- contributors: import_zod_openapi19.z.array(import_zod_openapi19.z.union([import_zod_openapi19.z.string(), PageUserSchema])).optional(),
1604
- message: import_zod_openapi19.z.string().optional(),
1632
+ savedBy: import_zod_openapi20.z.union([import_zod_openapi20.z.string(), PageUserSchema]).nullable().optional(),
1633
+ contributors: import_zod_openapi20.z.array(import_zod_openapi20.z.union([import_zod_openapi20.z.string(), PageUserSchema])).optional(),
1634
+ message: import_zod_openapi20.z.string().optional(),
1605
1635
  // RFC-0010 — edit channel ('web' | 'oauth' | 'pat'); absent on
1606
1636
  // pre-RFC-0010 / collaborative / browser revisions.
1607
- editVia: import_zod_openapi19.z.enum(["web", "oauth", "pat"]).optional()
1608
- });
1609
- var PageExtendedSchema = import_zod_openapi19.z.record(import_zod_openapi19.z.string(), import_zod_openapi19.z.any()).optional();
1610
- var PageSchema = import_zod_openapi19.z.object({
1611
- _id: import_zod_openapi19.z.string(),
1612
- path: import_zod_openapi19.z.string(),
1613
- revision: import_zod_openapi19.z.union([import_zod_openapi19.z.string(), RevisionSchema]).optional(),
1614
- redirectTo: import_zod_openapi19.z.string().nullable().optional(),
1637
+ editVia: import_zod_openapi20.z.enum(["web", "oauth", "pat"]).optional()
1638
+ });
1639
+ var PageExtendedSchema = import_zod_openapi20.z.record(import_zod_openapi20.z.string(), import_zod_openapi20.z.any()).optional();
1640
+ var PageSchema = import_zod_openapi20.z.object({
1641
+ _id: import_zod_openapi20.z.string(),
1642
+ path: import_zod_openapi20.z.string(),
1643
+ revision: import_zod_openapi20.z.union([import_zod_openapi20.z.string(), RevisionSchema]).optional(),
1644
+ redirectTo: import_zod_openapi20.z.string().nullable().optional(),
1615
1645
  status: PageStatusSchema.nullable().optional(),
1616
- grant: import_zod_openapi19.z.number().optional(),
1617
- grantedUsers: import_zod_openapi19.z.array(import_zod_openapi19.z.string()).optional(),
1618
- creator: import_zod_openapi19.z.union([import_zod_openapi19.z.string(), PageUserSchema]).nullable().optional(),
1619
- lastUpdateUser: import_zod_openapi19.z.union([import_zod_openapi19.z.string(), PageUserSchema]).nullable().optional(),
1620
- liker: import_zod_openapi19.z.array(import_zod_openapi19.z.string()).optional(),
1621
- commentCount: import_zod_openapi19.z.number().default(0),
1646
+ grant: import_zod_openapi20.z.number().optional(),
1647
+ grantedUsers: import_zod_openapi20.z.array(import_zod_openapi20.z.string()).optional(),
1648
+ creator: import_zod_openapi20.z.union([import_zod_openapi20.z.string(), PageUserSchema]).nullable().optional(),
1649
+ lastUpdateUser: import_zod_openapi20.z.union([import_zod_openapi20.z.string(), PageUserSchema]).nullable().optional(),
1650
+ liker: import_zod_openapi20.z.array(import_zod_openapi20.z.string()).optional(),
1651
+ commentCount: import_zod_openapi20.z.number().default(0),
1622
1652
  extended: PageExtendedSchema,
1623
- createdAt: import_zod_openapi19.z.string(),
1624
- updatedAt: import_zod_openapi19.z.string().optional(),
1653
+ createdAt: import_zod_openapi20.z.string(),
1654
+ updatedAt: import_zod_openapi20.z.string().optional(),
1625
1655
  // RFC-0003 collaborative-edit fields. All optional; `null` is the
1626
1656
  // "no live state yet" value. Existing read endpoints (list /
1627
1657
  // detail) do not currently emit these — the contract is widened
@@ -1629,31 +1659,32 @@ var PageSchema = import_zod_openapi19.z.object({
1629
1659
  // bump. `yjsState` is intentionally omitted from the contract:
1630
1660
  // the binary blob lives only inside Hocuspocus and never crosses
1631
1661
  // the HTTP API.
1632
- currentRevision: import_zod_openapi19.z.string().nullable().optional(),
1633
- yjsCheckpointAt: import_zod_openapi19.z.string().nullable().optional(),
1662
+ currentRevision: import_zod_openapi20.z.string().nullable().optional(),
1663
+ yjsCheckpointAt: import_zod_openapi20.z.string().nullable().optional(),
1634
1664
  // dynamic fields
1635
- latestRevision: import_zod_openapi19.z.string().optional(),
1636
- likerCount: import_zod_openapi19.z.number().optional(),
1637
- seenUsersCount: import_zod_openapi19.z.number().optional()
1665
+ latestRevision: import_zod_openapi20.z.string().optional(),
1666
+ likerCount: import_zod_openapi20.z.number().optional(),
1667
+ seenUsersCount: import_zod_openapi20.z.number().optional()
1638
1668
  });
1639
1669
  var PageWithRevisionSchema = PageSchema.extend({
1640
1670
  revision: RevisionSchema,
1641
1671
  creator: PageUserSchema.nullable().optional(),
1642
1672
  lastUpdateUser: PageUserSchema.nullable().optional()
1643
1673
  });
1644
- var GetPageRequestSchema = import_zod_openapi19.z.object({
1645
- path: import_zod_openapi19.z.string().optional(),
1646
- page_id: import_zod_openapi19.z.string().optional(),
1647
- revision_id: import_zod_openapi19.z.string().optional()
1674
+ var GetPageRequestSchema = import_zod_openapi20.z.object({
1675
+ path: import_zod_openapi20.z.string().optional(),
1676
+ page_id: import_zod_openapi20.z.string().optional(),
1677
+ revision_id: import_zod_openapi20.z.string().optional()
1648
1678
  });
1649
- var GetPageResponseSchema = import_zod_openapi19.z.object({
1679
+ var GetPageResponseSchema = import_zod_openapi20.z.object({
1650
1680
  page: PageWithRevisionSchema
1651
1681
  });
1652
- var ListPagesRequestSchema = import_zod_openapi19.z.object({
1653
- path: import_zod_openapi19.z.string().optional(),
1654
- user: import_zod_openapi19.z.string().optional(),
1655
- limit: import_zod_openapi19.z.coerce.number().optional().default(50),
1656
- offset: import_zod_openapi19.z.coerce.number().optional().default(0),
1682
+ var ClaimPageLinkAccessResponseSchema = GetPageResponseSchema.extend({ granted: import_zod_openapi20.z.boolean() });
1683
+ var ListPagesRequestSchema = import_zod_openapi20.z.object({
1684
+ path: import_zod_openapi20.z.string().optional(),
1685
+ user: import_zod_openapi20.z.string().optional(),
1686
+ limit: import_zod_openapi20.z.coerce.number().optional().default(50),
1687
+ offset: import_zod_openapi20.z.coerce.number().optional().default(0),
1657
1688
  // NOT `z.coerce.boolean()`: that uses JS `Boolean(v)`, so the string
1658
1689
  // `"false"` (which is how the web client serialises `false` on the
1659
1690
  // query string) coerces to `true`. That silently flipped
@@ -1661,25 +1692,25 @@ var ListPagesRequestSchema = import_zod_openapi19.z.object({
1661
1692
  // filter and leak other users' drafts. Parse the string explicitly so
1662
1693
  // only `"true"` / `true` is truthy; anything else (incl. `"false"`,
1663
1694
  // absent) is `false`.
1664
- include_deleted: import_zod_openapi19.z.preprocess((v) => v === true || v === "true" || v === "1", import_zod_openapi19.z.boolean()).optional().default(false),
1695
+ include_deleted: import_zod_openapi20.z.preprocess((v) => v === true || v === "true" || v === "1", import_zod_openapi20.z.boolean()).optional().default(false),
1665
1696
  // Sort field + direction for the listing. Defaults preserve the legacy
1666
1697
  // "newest-updated first" order so existing callers are unaffected.
1667
1698
  // `path` sorts alphabetically by full page path (≈ name order).
1668
- sort: import_zod_openapi19.z.enum(["updatedAt", "createdAt", "path"]).optional().default("updatedAt"),
1669
- order: import_zod_openapi19.z.enum(["asc", "desc"]).optional().default("desc"),
1699
+ sort: import_zod_openapi20.z.enum(["updatedAt", "createdAt", "path"]).optional().default("updatedAt"),
1700
+ order: import_zod_openapi20.z.enum(["asc", "desc"]).optional().default("desc"),
1670
1701
  // When listing a portal path (`/foo/`), open the portal document at this
1671
1702
  // past revision so the catch-all can mirror `?revision_id=` on portals.
1672
1703
  // Only the `portalPage` is rewound — the child rows always reflect the
1673
1704
  // latest. Absent for normal listings.
1674
- revision_id: import_zod_openapi19.z.string().optional()
1705
+ revision_id: import_zod_openapi20.z.string().optional()
1675
1706
  });
1676
- var PagerSchema = import_zod_openapi19.z.object({
1677
- prev: import_zod_openapi19.z.number().nullable(),
1678
- next: import_zod_openapi19.z.number().nullable(),
1679
- offset: import_zod_openapi19.z.number()
1707
+ var PagerSchema = import_zod_openapi20.z.object({
1708
+ prev: import_zod_openapi20.z.number().nullable(),
1709
+ next: import_zod_openapi20.z.number().nullable(),
1710
+ offset: import_zod_openapi20.z.number()
1680
1711
  });
1681
- var ListPagesResponseSchema = import_zod_openapi19.z.object({
1682
- pages: import_zod_openapi19.z.array(PageSchema),
1712
+ var ListPagesResponseSchema = import_zod_openapi20.z.object({
1713
+ pages: import_zod_openapi20.z.array(PageSchema),
1683
1714
  pager: PagerSchema,
1684
1715
  portalPage: PageSchema.nullable().optional(),
1685
1716
  // When listing a portal path (`/foo/`) that has NO portal document of
@@ -1691,208 +1722,208 @@ var ListPagesResponseSchema = import_zod_openapi19.z.object({
1691
1722
  // listings.
1692
1723
  contentPage: PageSchema.nullable().optional()
1693
1724
  });
1694
- var PageChildSegmentSchema = import_zod_openapi19.z.object({
1725
+ var PageChildSegmentSchema = import_zod_openapi20.z.object({
1695
1726
  // The bare segment name immediately under the queried path
1696
1727
  // (e.g. 'rfc' for /crowi/rfc/... when querying /crowi/).
1697
- segment: import_zod_openapi19.z.string(),
1728
+ segment: import_zod_openapi20.z.string(),
1698
1729
  // Portal-style path for this segment (always trailing-slashed),
1699
1730
  // e.g. '/crowi/rfc/'. Drop the trailing slash for the page path when
1700
1731
  // the segment is a leaf page (see `isPage`).
1701
- path: import_zod_openapi19.z.string(),
1732
+ path: import_zod_openapi20.z.string(),
1702
1733
  // True when a real page is saved at the segment path itself
1703
1734
  // (e.g. `/crowi/rfc`, no trailing slash) — i.e. the segment is a
1704
1735
  // navigable page, not only an inferred directory.
1705
- isPage: import_zod_openapi19.z.boolean(),
1736
+ isPage: import_zod_openapi20.z.boolean(),
1706
1737
  // True when a real portal page is saved at `path` (→ compass icon).
1707
- hasPortal: import_zod_openapi19.z.boolean(),
1738
+ hasPortal: import_zod_openapi20.z.boolean(),
1708
1739
  // Number of descendant content pages strictly under this segment
1709
1740
  // (excludes the segment's own page / portal docs). A rough "how much
1710
1741
  // lives here" hint; > 0 means the segment is an expandable directory.
1711
- count: import_zod_openapi19.z.number()
1742
+ count: import_zod_openapi20.z.number()
1712
1743
  });
1713
- var ListPageChildrenRequestSchema = import_zod_openapi19.z.object({
1744
+ var ListPageChildrenRequestSchema = import_zod_openapi20.z.object({
1714
1745
  // Portal path to list children of. Trailing slash optional — the
1715
1746
  // handler normalises it. '/' lists the top-level segments.
1716
- path: import_zod_openapi19.z.string()
1747
+ path: import_zod_openapi20.z.string()
1717
1748
  });
1718
- var ListPageChildrenResponseSchema = import_zod_openapi19.z.object({
1749
+ var ListPageChildrenResponseSchema = import_zod_openapi20.z.object({
1719
1750
  // Sorted alphabetically by segment.
1720
- children: import_zod_openapi19.z.array(PageChildSegmentSchema)
1721
- });
1722
- var CreatePageRequestSchema = import_zod_openapi19.z.object({
1723
- path: import_zod_openapi19.z.string(),
1724
- body: import_zod_openapi19.z.string(),
1725
- grant: import_zod_openapi19.z.number().optional()
1726
- });
1727
- var UpdatePageRequestSchema = import_zod_openapi19.z.object({
1728
- page_id: import_zod_openapi19.z.string(),
1729
- body: import_zod_openapi19.z.string(),
1730
- revision_id: import_zod_openapi19.z.string().optional(),
1731
- grant: import_zod_openapi19.z.number().optional()
1732
- });
1733
- var RevertToRevisionRequestSchema = import_zod_openapi19.z.object({
1734
- page_id: import_zod_openapi19.z.string(),
1735
- revision_id: import_zod_openapi19.z.string()
1736
- });
1737
- var SetPageGrantRequestSchema = import_zod_openapi19.z.object({
1738
- page_id: import_zod_openapi19.z.string(),
1739
- grant: import_zod_openapi19.z.number().int()
1740
- });
1741
- var RenamePageRequestSchema = import_zod_openapi19.z.object({
1742
- page_id: import_zod_openapi19.z.string(),
1743
- new_path: import_zod_openapi19.z.string(),
1744
- revision_id: import_zod_openapi19.z.string().optional(),
1745
- create_redirect: import_zod_openapi19.z.boolean().optional(),
1751
+ children: import_zod_openapi20.z.array(PageChildSegmentSchema)
1752
+ });
1753
+ var CreatePageRequestSchema = import_zod_openapi20.z.object({
1754
+ path: import_zod_openapi20.z.string(),
1755
+ body: import_zod_openapi20.z.string(),
1756
+ grant: import_zod_openapi20.z.number().optional()
1757
+ });
1758
+ var UpdatePageRequestSchema = import_zod_openapi20.z.object({
1759
+ page_id: import_zod_openapi20.z.string(),
1760
+ body: import_zod_openapi20.z.string(),
1761
+ revision_id: import_zod_openapi20.z.string().optional(),
1762
+ grant: import_zod_openapi20.z.number().optional()
1763
+ });
1764
+ var RevertToRevisionRequestSchema = import_zod_openapi20.z.object({
1765
+ page_id: import_zod_openapi20.z.string(),
1766
+ revision_id: import_zod_openapi20.z.string()
1767
+ });
1768
+ var SetPageGrantRequestSchema = import_zod_openapi20.z.object({
1769
+ page_id: import_zod_openapi20.z.string(),
1770
+ grant: import_zod_openapi20.z.number().int()
1771
+ });
1772
+ var RenamePageRequestSchema = import_zod_openapi20.z.object({
1773
+ page_id: import_zod_openapi20.z.string(),
1774
+ new_path: import_zod_openapi20.z.string(),
1775
+ revision_id: import_zod_openapi20.z.string().optional(),
1776
+ create_redirect: import_zod_openapi20.z.boolean().optional(),
1746
1777
  // When true, rename the page together with its whole (grant-visible)
1747
1778
  // descendant subtree (renameTree) instead of just the single page.
1748
1779
  // Defaults to false — the single-page rename behaviour.
1749
- include_descendants: import_zod_openapi19.z.boolean().optional()
1780
+ include_descendants: import_zod_openapi20.z.boolean().optional()
1750
1781
  });
1751
- var RenamePageResponseSchema = import_zod_openapi19.z.object({
1782
+ var RenamePageResponseSchema = import_zod_openapi20.z.object({
1752
1783
  page: PageSchema,
1753
- renamed_count: import_zod_openapi19.z.number()
1754
- });
1755
- var RenameTreeErrorSchema = import_zod_openapi19.z.object({
1756
- error: import_zod_openapi19.z.object({
1757
- code: import_zod_openapi19.z.literal("PAGE_RENAME_TREE_FAILED"),
1758
- message: import_zod_openapi19.z.string(),
1759
- conflicts: import_zod_openapi19.z.array(
1760
- import_zod_openapi19.z.object({
1761
- path: import_zod_openapi19.z.string(),
1762
- reasons: import_zod_openapi19.z.array(import_zod_openapi19.z.string())
1784
+ renamed_count: import_zod_openapi20.z.number()
1785
+ });
1786
+ var RenameTreeErrorSchema = import_zod_openapi20.z.object({
1787
+ error: import_zod_openapi20.z.object({
1788
+ code: import_zod_openapi20.z.literal("PAGE_RENAME_TREE_FAILED"),
1789
+ message: import_zod_openapi20.z.string(),
1790
+ conflicts: import_zod_openapi20.z.array(
1791
+ import_zod_openapi20.z.object({
1792
+ path: import_zod_openapi20.z.string(),
1793
+ reasons: import_zod_openapi20.z.array(import_zod_openapi20.z.string())
1763
1794
  })
1764
1795
  ),
1765
1796
  // True when the failure happened after some pages were already moved
1766
1797
  // (non-transactional best-effort). When omitted/false the failure was
1767
1798
  // detected up-front and nothing was moved.
1768
- partial: import_zod_openapi19.z.boolean().optional()
1799
+ partial: import_zod_openapi20.z.boolean().optional()
1769
1800
  })
1770
1801
  });
1771
- var RenameSubtreeRequestSchema = import_zod_openapi19.z.object({
1772
- old_path: import_zod_openapi19.z.string(),
1773
- new_path: import_zod_openapi19.z.string(),
1774
- create_redirect: import_zod_openapi19.z.boolean().optional()
1802
+ var RenameSubtreeRequestSchema = import_zod_openapi20.z.object({
1803
+ old_path: import_zod_openapi20.z.string(),
1804
+ new_path: import_zod_openapi20.z.string(),
1805
+ create_redirect: import_zod_openapi20.z.boolean().optional()
1775
1806
  });
1776
- var RenameSubtreeResponseSchema = import_zod_openapi19.z.object({
1777
- renamed_count: import_zod_openapi19.z.number()
1807
+ var RenameSubtreeResponseSchema = import_zod_openapi20.z.object({
1808
+ renamed_count: import_zod_openapi20.z.number()
1778
1809
  });
1779
- var PageNotFoundErrorSchema = import_zod_openapi19.z.object({
1780
- error: import_zod_openapi19.z.object({
1781
- code: import_zod_openapi19.z.literal("PAGE_NOT_FOUND"),
1782
- message: import_zod_openapi19.z.literal("Page not found")
1810
+ var PageNotFoundErrorSchema = import_zod_openapi20.z.object({
1811
+ error: import_zod_openapi20.z.object({
1812
+ code: import_zod_openapi20.z.literal("PAGE_NOT_FOUND"),
1813
+ message: import_zod_openapi20.z.literal("Page not found")
1783
1814
  })
1784
1815
  });
1785
- var PageNotGrantedErrorSchema = import_zod_openapi19.z.object({
1786
- error: import_zod_openapi19.z.object({
1787
- code: import_zod_openapi19.z.literal("PAGE_NOT_GRANTED"),
1788
- message: import_zod_openapi19.z.literal("Page is not granted for the user")
1816
+ var PageNotGrantedErrorSchema = import_zod_openapi20.z.object({
1817
+ error: import_zod_openapi20.z.object({
1818
+ code: import_zod_openapi20.z.literal("PAGE_NOT_GRANTED"),
1819
+ message: import_zod_openapi20.z.literal("Page is not granted for the user")
1789
1820
  })
1790
1821
  });
1791
- var PageRevisionErrorSchema = import_zod_openapi19.z.object({
1792
- error: import_zod_openapi19.z.object({
1793
- code: import_zod_openapi19.z.literal("PAGE_REVISION_ERROR"),
1794
- message: import_zod_openapi19.z.string()
1822
+ var PageRevisionErrorSchema = import_zod_openapi20.z.object({
1823
+ error: import_zod_openapi20.z.object({
1824
+ code: import_zod_openapi20.z.literal("PAGE_REVISION_ERROR"),
1825
+ message: import_zod_openapi20.z.string()
1795
1826
  })
1796
1827
  });
1797
- var SeenPageRequestSchema = import_zod_openapi19.z.object({
1798
- page_id: import_zod_openapi19.z.string()
1828
+ var SeenPageRequestSchema = import_zod_openapi20.z.object({
1829
+ page_id: import_zod_openapi20.z.string()
1799
1830
  });
1800
- var SeenUsersResponseSchema = import_zod_openapi19.z.object({
1801
- seenUsers: import_zod_openapi19.z.array(UserPublicSchema),
1802
- seenUsersCount: import_zod_openapi19.z.number()
1831
+ var SeenUsersResponseSchema = import_zod_openapi20.z.object({
1832
+ seenUsers: import_zod_openapi20.z.array(UserPublicSchema),
1833
+ seenUsersCount: import_zod_openapi20.z.number()
1803
1834
  });
1804
- var GetSeenUsersRequestSchema = import_zod_openapi19.z.object({
1805
- page_id: import_zod_openapi19.z.string(),
1835
+ var GetSeenUsersRequestSchema = import_zod_openapi20.z.object({
1836
+ page_id: import_zod_openapi20.z.string(),
1806
1837
  // Optional cap on returned `seenUsers`. `seenUsersCount` always reflects
1807
1838
  // the full count regardless of `limit`. Omit for the full list.
1808
- limit: import_zod_openapi19.z.coerce.number().int().positive().optional()
1839
+ limit: import_zod_openapi20.z.coerce.number().int().positive().optional()
1809
1840
  });
1810
- var GetWatchStatusRequestSchema = import_zod_openapi19.z.object({
1811
- page_id: import_zod_openapi19.z.string()
1841
+ var GetWatchStatusRequestSchema = import_zod_openapi20.z.object({
1842
+ page_id: import_zod_openapi20.z.string()
1812
1843
  });
1813
- var WatchStatusResponseSchema = import_zod_openapi19.z.object({
1814
- watching: import_zod_openapi19.z.boolean()
1844
+ var WatchStatusResponseSchema = import_zod_openapi20.z.object({
1845
+ watching: import_zod_openapi20.z.boolean()
1815
1846
  });
1816
- var SetWatchStatusRequestSchema = import_zod_openapi19.z.object({
1817
- page_id: import_zod_openapi19.z.string(),
1818
- watching: import_zod_openapi19.z.boolean()
1847
+ var SetWatchStatusRequestSchema = import_zod_openapi20.z.object({
1848
+ page_id: import_zod_openapi20.z.string(),
1849
+ watching: import_zod_openapi20.z.boolean()
1819
1850
  });
1820
1851
 
1821
1852
  // src/schemas/me.ts
1822
- var LanguageSchema = import_zod_openapi20.z.enum(["en", "ja"]);
1823
- var ThemeSchema = import_zod_openapi20.z.enum(["system", "light", "dark"]);
1824
- var UserProfileResponseSchema = import_zod_openapi20.z.object({
1825
- id: import_zod_openapi20.z.string(),
1826
- username: import_zod_openapi20.z.string(),
1827
- name: import_zod_openapi20.z.string(),
1828
- email: import_zod_openapi20.z.string().email(),
1853
+ var LanguageSchema = import_zod_openapi21.z.enum(["en", "ja"]);
1854
+ var ThemeSchema = import_zod_openapi21.z.enum(["system", "light", "dark"]);
1855
+ var UserProfileResponseSchema = import_zod_openapi21.z.object({
1856
+ id: import_zod_openapi21.z.string(),
1857
+ username: import_zod_openapi21.z.string(),
1858
+ name: import_zod_openapi21.z.string(),
1859
+ email: import_zod_openapi21.z.string().email(),
1829
1860
  lang: LanguageSchema,
1830
1861
  theme: ThemeSchema,
1831
- image: import_zod_openapi20.z.string().nullable(),
1832
- introduction: import_zod_openapi20.z.string().optional(),
1833
- hasPassword: import_zod_openapi20.z.boolean(),
1834
- createdAt: import_zod_openapi20.z.string(),
1862
+ image: import_zod_openapi21.z.string().nullable(),
1863
+ introduction: import_zod_openapi21.z.string().optional(),
1864
+ hasPassword: import_zod_openapi21.z.boolean(),
1865
+ createdAt: import_zod_openapi21.z.string(),
1835
1866
  /**
1836
1867
  * True when the profile update requested a new email that is awaiting
1837
1868
  * confirmation: the stored `email` is unchanged and a confirmation
1838
1869
  * link was sent to the new address.
1839
1870
  */
1840
- emailChangePending: import_zod_openapi20.z.boolean().optional()
1871
+ emailChangePending: import_zod_openapi21.z.boolean().optional()
1841
1872
  });
1842
- var UpdateProfileRequestSchema = import_zod_openapi20.z.object({
1843
- userForm: import_zod_openapi20.z.object({
1844
- name: import_zod_openapi20.z.string().min(1, "Name is required"),
1845
- email: import_zod_openapi20.z.string().email("Invalid email format"),
1873
+ var UpdateProfileRequestSchema = import_zod_openapi21.z.object({
1874
+ userForm: import_zod_openapi21.z.object({
1875
+ name: import_zod_openapi21.z.string().min(1, "Name is required"),
1876
+ email: import_zod_openapi21.z.string().email("Invalid email format"),
1846
1877
  lang: LanguageSchema
1847
1878
  })
1848
1879
  });
1849
- var UpdateThemeRequestSchema = import_zod_openapi20.z.object({
1880
+ var UpdateThemeRequestSchema = import_zod_openapi21.z.object({
1850
1881
  theme: ThemeSchema
1851
1882
  });
1852
- var ThemeUpdateResponseSchema = import_zod_openapi20.z.object({
1853
- status: import_zod_openapi20.z.literal("ok"),
1883
+ var ThemeUpdateResponseSchema = import_zod_openapi21.z.object({
1884
+ status: import_zod_openapi21.z.literal("ok"),
1854
1885
  theme: ThemeSchema
1855
1886
  });
1856
- var PictureUploadResponseSchema = import_zod_openapi20.z.object({
1857
- status: import_zod_openapi20.z.boolean(),
1858
- url: import_zod_openapi20.z.string().optional(),
1859
- message: import_zod_openapi20.z.string().optional()
1887
+ var PictureUploadResponseSchema = import_zod_openapi21.z.object({
1888
+ status: import_zod_openapi21.z.boolean(),
1889
+ url: import_zod_openapi21.z.string().optional(),
1890
+ message: import_zod_openapi21.z.string().optional()
1860
1891
  });
1861
- var SuccessResponseSchema = import_zod_openapi20.z.object({
1862
- status: import_zod_openapi20.z.literal("ok"),
1863
- message: import_zod_openapi20.z.string().optional()
1892
+ var SuccessResponseSchema = import_zod_openapi21.z.object({
1893
+ status: import_zod_openapi21.z.literal("ok"),
1894
+ message: import_zod_openapi21.z.string().optional()
1864
1895
  });
1865
- var ProfileErrorResponseSchema = import_zod_openapi20.z.object({
1866
- status: import_zod_openapi20.z.literal("error"),
1896
+ var ProfileErrorResponseSchema = import_zod_openapi21.z.object({
1897
+ status: import_zod_openapi21.z.literal("error"),
1867
1898
  /** Stable code so the web can localize the message (e.g. EMAIL_TAKEN). */
1868
- code: import_zod_openapi20.z.string().optional(),
1869
- message: import_zod_openapi20.z.string().optional(),
1870
- errors: import_zod_openapi20.z.array(import_zod_openapi20.z.string()).optional()
1899
+ code: import_zod_openapi21.z.string().optional(),
1900
+ message: import_zod_openapi21.z.string().optional(),
1901
+ errors: import_zod_openapi21.z.array(import_zod_openapi21.z.string()).optional()
1871
1902
  });
1872
1903
  var PASSWORD_REGEX = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?`~])[a-zA-Z\d!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?`~]+$/;
1873
- var UpdatePasswordRequestSchema = import_zod_openapi20.z.object({
1874
- oldPassword: import_zod_openapi20.z.string().optional(),
1875
- newPassword: import_zod_openapi20.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"),
1876
- newPasswordConfirm: import_zod_openapi20.z.string()
1904
+ var UpdatePasswordRequestSchema = import_zod_openapi21.z.object({
1905
+ oldPassword: import_zod_openapi21.z.string().optional(),
1906
+ newPassword: import_zod_openapi21.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"),
1907
+ newPasswordConfirm: import_zod_openapi21.z.string()
1877
1908
  }).refine((data) => data.newPassword === data.newPasswordConfirm, {
1878
1909
  message: "Passwords do not match",
1879
1910
  path: ["newPasswordConfirm"]
1880
1911
  });
1881
- var PasswordUpdateSuccessSchema = import_zod_openapi20.z.object({
1882
- status: import_zod_openapi20.z.literal("ok"),
1883
- message: import_zod_openapi20.z.string()
1912
+ var PasswordUpdateSuccessSchema = import_zod_openapi21.z.object({
1913
+ status: import_zod_openapi21.z.literal("ok"),
1914
+ message: import_zod_openapi21.z.string()
1884
1915
  });
1885
- var PasswordErrorResponseSchema = import_zod_openapi20.z.object({
1886
- status: import_zod_openapi20.z.literal("error"),
1887
- message: import_zod_openapi20.z.string(),
1888
- errors: import_zod_openapi20.z.array(import_zod_openapi20.z.string()).optional()
1916
+ var PasswordErrorResponseSchema = import_zod_openapi21.z.object({
1917
+ status: import_zod_openapi21.z.literal("error"),
1918
+ message: import_zod_openapi21.z.string(),
1919
+ errors: import_zod_openapi21.z.array(import_zod_openapi21.z.string()).optional()
1889
1920
  });
1890
- var RecentlyViewedPagesResponseSchema = import_zod_openapi20.z.object({
1891
- pages: import_zod_openapi20.z.array(PageSchema)
1921
+ var RecentlyViewedPagesResponseSchema = import_zod_openapi21.z.object({
1922
+ pages: import_zod_openapi21.z.array(PageSchema)
1892
1923
  });
1893
1924
 
1894
1925
  // src/contracts/me.ts
1895
- var getProfileRoute = (0, import_zod_openapi21.createRoute)({
1926
+ var getProfileRoute = (0, import_zod_openapi22.createRoute)({
1896
1927
  method: "get",
1897
1928
  path: "/me",
1898
1929
  tags: ["me"],
@@ -1909,7 +1940,7 @@ var getProfileRoute = (0, import_zod_openapi21.createRoute)({
1909
1940
  }
1910
1941
  }
1911
1942
  });
1912
- var updateProfileRoute = (0, import_zod_openapi21.createRoute)({
1943
+ var updateProfileRoute = (0, import_zod_openapi22.createRoute)({
1913
1944
  method: "put",
1914
1945
  path: "/me",
1915
1946
  tags: ["me"],
@@ -1935,7 +1966,7 @@ var updateProfileRoute = (0, import_zod_openapi21.createRoute)({
1935
1966
  }
1936
1967
  }
1937
1968
  });
1938
- var updateThemeRoute = (0, import_zod_openapi21.createRoute)({
1969
+ var updateThemeRoute = (0, import_zod_openapi22.createRoute)({
1939
1970
  method: "patch",
1940
1971
  path: "/me/theme",
1941
1972
  tags: ["me"],
@@ -1961,7 +1992,7 @@ var updateThemeRoute = (0, import_zod_openapi21.createRoute)({
1961
1992
  }
1962
1993
  }
1963
1994
  });
1964
- var uploadPictureRoute = (0, import_zod_openapi21.createRoute)({
1995
+ var uploadPictureRoute = (0, import_zod_openapi22.createRoute)({
1965
1996
  method: "post",
1966
1997
  path: "/me/picture",
1967
1998
  tags: ["me"],
@@ -1971,8 +2002,8 @@ var uploadPictureRoute = (0, import_zod_openapi21.createRoute)({
1971
2002
  body: {
1972
2003
  content: {
1973
2004
  "multipart/form-data": {
1974
- schema: import_zod_openapi21.z.object({
1975
- file: import_zod_openapi21.z.any().optional().describe("Profile picture file")
2005
+ schema: import_zod_openapi22.z.object({
2006
+ file: import_zod_openapi22.z.any().optional().describe("Profile picture file")
1976
2007
  })
1977
2008
  }
1978
2009
  }
@@ -1993,7 +2024,7 @@ var uploadPictureRoute = (0, import_zod_openapi21.createRoute)({
1993
2024
  }
1994
2025
  }
1995
2026
  });
1996
- var deletePictureRoute = (0, import_zod_openapi21.createRoute)({
2027
+ var deletePictureRoute = (0, import_zod_openapi22.createRoute)({
1997
2028
  method: "delete",
1998
2029
  path: "/me/picture",
1999
2030
  tags: ["me"],
@@ -2014,7 +2045,7 @@ var deletePictureRoute = (0, import_zod_openapi21.createRoute)({
2014
2045
  }
2015
2046
  }
2016
2047
  });
2017
- var updatePasswordRoute = (0, import_zod_openapi21.createRoute)({
2048
+ var updatePasswordRoute = (0, import_zod_openapi22.createRoute)({
2018
2049
  method: "put",
2019
2050
  path: "/me/password",
2020
2051
  tags: ["me"],
@@ -2040,7 +2071,7 @@ var updatePasswordRoute = (0, import_zod_openapi21.createRoute)({
2040
2071
  }
2041
2072
  }
2042
2073
  });
2043
- var recentlyViewedPagesRoute = (0, import_zod_openapi21.createRoute)({
2074
+ var recentlyViewedPagesRoute = (0, import_zod_openapi22.createRoute)({
2044
2075
  method: "get",
2045
2076
  path: "/me/recently-viewed-pages",
2046
2077
  tags: ["me"],
@@ -2072,43 +2103,43 @@ var meRoutes = {
2072
2103
  };
2073
2104
 
2074
2105
  // src/contracts/access-token.ts
2075
- var import_zod_openapi23 = require("@hono/zod-openapi");
2106
+ var import_zod_openapi24 = require("@hono/zod-openapi");
2076
2107
 
2077
2108
  // src/schemas/access-token.ts
2078
- var import_zod_openapi22 = require("@hono/zod-openapi");
2079
- var AccessTokenSchema = import_zod_openapi22.z.object({
2080
- id: import_zod_openapi22.z.string(),
2081
- name: import_zod_openapi22.z.string(),
2082
- scopes: import_zod_openapi22.z.array(import_zod_openapi22.z.string()),
2109
+ var import_zod_openapi23 = require("@hono/zod-openapi");
2110
+ var AccessTokenSchema = import_zod_openapi23.z.object({
2111
+ id: import_zod_openapi23.z.string(),
2112
+ name: import_zod_openapi23.z.string(),
2113
+ scopes: import_zod_openapi23.z.array(import_zod_openapi23.z.string()),
2083
2114
  /** ISO-8601 expiry, or `null` for a non-expiring token. */
2084
- expiresAt: import_zod_openapi22.z.string().nullable(),
2115
+ expiresAt: import_zod_openapi23.z.string().nullable(),
2085
2116
  /** ISO-8601 of last successful use, or `null` if never used. */
2086
- lastUsedAt: import_zod_openapi22.z.string().nullable(),
2087
- createdAt: import_zod_openapi22.z.string()
2117
+ lastUsedAt: import_zod_openapi23.z.string().nullable(),
2118
+ createdAt: import_zod_openapi23.z.string()
2088
2119
  });
2089
- var ListAccessTokensResponseSchema = import_zod_openapi22.z.object({
2090
- accessTokens: import_zod_openapi22.z.array(AccessTokenSchema)
2120
+ var ListAccessTokensResponseSchema = import_zod_openapi23.z.object({
2121
+ accessTokens: import_zod_openapi23.z.array(AccessTokenSchema)
2091
2122
  });
2092
- var CreateAccessTokenRequestSchema = import_zod_openapi22.z.object({
2093
- name: import_zod_openapi22.z.string().min(1, "Name is required").max(200),
2094
- scopes: import_zod_openapi22.z.array(import_zod_openapi22.z.string()).min(1, "At least one scope is required"),
2095
- expiresAt: import_zod_openapi22.z.string().datetime().nullable().optional()
2123
+ var CreateAccessTokenRequestSchema = import_zod_openapi23.z.object({
2124
+ name: import_zod_openapi23.z.string().min(1, "Name is required").max(200),
2125
+ scopes: import_zod_openapi23.z.array(import_zod_openapi23.z.string()).min(1, "At least one scope is required"),
2126
+ expiresAt: import_zod_openapi23.z.string().datetime().nullable().optional()
2096
2127
  });
2097
2128
  var CreateAccessTokenResponseSchema = AccessTokenSchema.extend({
2098
- token: import_zod_openapi22.z.string()
2099
- });
2100
- var InvalidScopeErrorSchema = import_zod_openapi22.z.object({
2101
- error: import_zod_openapi22.z.object({
2102
- code: import_zod_openapi22.z.literal("INVALID_SCOPE"),
2103
- message: import_zod_openapi22.z.string(),
2104
- details: import_zod_openapi22.z.object({
2105
- invalidScopes: import_zod_openapi22.z.array(import_zod_openapi22.z.string())
2129
+ token: import_zod_openapi23.z.string()
2130
+ });
2131
+ var InvalidScopeErrorSchema = import_zod_openapi23.z.object({
2132
+ error: import_zod_openapi23.z.object({
2133
+ code: import_zod_openapi23.z.literal("INVALID_SCOPE"),
2134
+ message: import_zod_openapi23.z.string(),
2135
+ details: import_zod_openapi23.z.object({
2136
+ invalidScopes: import_zod_openapi23.z.array(import_zod_openapi23.z.string())
2106
2137
  }).optional()
2107
2138
  })
2108
2139
  });
2109
2140
 
2110
2141
  // src/contracts/access-token.ts
2111
- var listAccessTokensRoute = (0, import_zod_openapi23.createRoute)({
2142
+ var listAccessTokensRoute = (0, import_zod_openapi24.createRoute)({
2112
2143
  method: "get",
2113
2144
  path: "/me/access-tokens",
2114
2145
  tags: ["me"],
@@ -2133,7 +2164,7 @@ var listAccessTokensRoute = (0, import_zod_openapi23.createRoute)({
2133
2164
  }
2134
2165
  }
2135
2166
  });
2136
- var createAccessTokenRoute = (0, import_zod_openapi23.createRoute)({
2167
+ var createAccessTokenRoute = (0, import_zod_openapi24.createRoute)({
2137
2168
  method: "post",
2138
2169
  path: "/me/access-tokens",
2139
2170
  tags: ["me"],
@@ -2167,14 +2198,14 @@ var createAccessTokenRoute = (0, import_zod_openapi23.createRoute)({
2167
2198
  }
2168
2199
  }
2169
2200
  });
2170
- var deleteAccessTokenRoute = (0, import_zod_openapi23.createRoute)({
2201
+ var deleteAccessTokenRoute = (0, import_zod_openapi24.createRoute)({
2171
2202
  method: "delete",
2172
2203
  path: "/me/access-tokens/{id}",
2173
2204
  tags: ["me"],
2174
2205
  security: [{ bearerAuth: [] }],
2175
2206
  summary: "Revoke a personal access token",
2176
2207
  request: {
2177
- params: import_zod_openapi23.z.object({ id: import_zod_openapi23.z.string() })
2208
+ params: import_zod_openapi24.z.object({ id: import_zod_openapi24.z.string() })
2178
2209
  },
2179
2210
  responses: {
2180
2211
  200: {
@@ -2206,13 +2237,13 @@ var accessTokenRoutes = {
2206
2237
  };
2207
2238
 
2208
2239
  // src/contracts/oauth.ts
2209
- var import_zod_openapi26 = require("@hono/zod-openapi");
2240
+ var import_zod_openapi27 = require("@hono/zod-openapi");
2210
2241
 
2211
2242
  // src/schemas/oauth-endpoints.ts
2212
- var import_zod_openapi25 = require("@hono/zod-openapi");
2243
+ var import_zod_openapi26 = require("@hono/zod-openapi");
2213
2244
 
2214
2245
  // src/schemas/oauth.ts
2215
- var import_zod_openapi24 = require("@hono/zod-openapi");
2246
+ var import_zod_openapi25 = require("@hono/zod-openapi");
2216
2247
  var SCOPES = [
2217
2248
  // umbrella
2218
2249
  "read",
@@ -2280,11 +2311,11 @@ function scopeSatisfies(required, granted) {
2280
2311
  return false;
2281
2312
  }
2282
2313
  var InsufficientScopeErrorSchema = ApiErrorSchema.extend({
2283
- error: import_zod_openapi24.z.object({
2284
- code: import_zod_openapi24.z.literal("INSUFFICIENT_SCOPE"),
2285
- message: import_zod_openapi24.z.string(),
2286
- details: import_zod_openapi24.z.object({
2287
- requiredScope: import_zod_openapi24.z.string()
2314
+ error: import_zod_openapi25.z.object({
2315
+ code: import_zod_openapi25.z.literal("INSUFFICIENT_SCOPE"),
2316
+ message: import_zod_openapi25.z.string(),
2317
+ details: import_zod_openapi25.z.object({
2318
+ requiredScope: import_zod_openapi25.z.string()
2288
2319
  }).optional()
2289
2320
  })
2290
2321
  });
@@ -2303,96 +2334,96 @@ var OAUTH_ERROR_CODES = [
2303
2334
  "slow_down",
2304
2335
  "expired_token"
2305
2336
  ];
2306
- var OAuthErrorSchema = import_zod_openapi25.z.object({
2307
- error: import_zod_openapi25.z.enum(OAUTH_ERROR_CODES),
2308
- error_description: import_zod_openapi25.z.string().optional()
2309
- });
2310
- var AuthorizeRequestSchema = import_zod_openapi25.z.object({
2311
- client_id: import_zod_openapi25.z.string().min(1),
2312
- redirect_uri: import_zod_openapi25.z.string().min(1),
2313
- scope: import_zod_openapi25.z.string().min(1),
2314
- code_challenge: import_zod_openapi25.z.string().min(1),
2315
- code_challenge_method: import_zod_openapi25.z.literal("S256"),
2316
- state: import_zod_openapi25.z.string().optional()
2317
- });
2318
- var AuthorizeResponseSchema = import_zod_openapi25.z.object({
2319
- redirectUri: import_zod_openapi25.z.string()
2320
- });
2321
- var TokenRequestSchema = import_zod_openapi25.z.discriminatedUnion("grant_type", [
2322
- import_zod_openapi25.z.object({
2323
- grant_type: import_zod_openapi25.z.literal("authorization_code"),
2324
- code: import_zod_openapi25.z.string().min(1),
2325
- code_verifier: import_zod_openapi25.z.string().min(1),
2326
- redirect_uri: import_zod_openapi25.z.string().min(1),
2327
- client_id: import_zod_openapi25.z.string().min(1)
2337
+ var OAuthErrorSchema = import_zod_openapi26.z.object({
2338
+ error: import_zod_openapi26.z.enum(OAUTH_ERROR_CODES),
2339
+ error_description: import_zod_openapi26.z.string().optional()
2340
+ });
2341
+ var AuthorizeRequestSchema = import_zod_openapi26.z.object({
2342
+ client_id: import_zod_openapi26.z.string().min(1),
2343
+ redirect_uri: import_zod_openapi26.z.string().min(1),
2344
+ scope: import_zod_openapi26.z.string().min(1),
2345
+ code_challenge: import_zod_openapi26.z.string().min(1),
2346
+ code_challenge_method: import_zod_openapi26.z.literal("S256"),
2347
+ state: import_zod_openapi26.z.string().optional()
2348
+ });
2349
+ var AuthorizeResponseSchema = import_zod_openapi26.z.object({
2350
+ redirectUri: import_zod_openapi26.z.string()
2351
+ });
2352
+ var TokenRequestSchema = import_zod_openapi26.z.discriminatedUnion("grant_type", [
2353
+ import_zod_openapi26.z.object({
2354
+ grant_type: import_zod_openapi26.z.literal("authorization_code"),
2355
+ code: import_zod_openapi26.z.string().min(1),
2356
+ code_verifier: import_zod_openapi26.z.string().min(1),
2357
+ redirect_uri: import_zod_openapi26.z.string().min(1),
2358
+ client_id: import_zod_openapi26.z.string().min(1)
2328
2359
  }),
2329
- import_zod_openapi25.z.object({
2330
- grant_type: import_zod_openapi25.z.literal("refresh_token"),
2331
- refresh_token: import_zod_openapi25.z.string().min(1),
2332
- client_id: import_zod_openapi25.z.string().min(1),
2333
- scope: import_zod_openapi25.z.string().optional()
2360
+ import_zod_openapi26.z.object({
2361
+ grant_type: import_zod_openapi26.z.literal("refresh_token"),
2362
+ refresh_token: import_zod_openapi26.z.string().min(1),
2363
+ client_id: import_zod_openapi26.z.string().min(1),
2364
+ scope: import_zod_openapi26.z.string().optional()
2334
2365
  }),
2335
2366
  // RFC 8628 §3.4 — device authorization grant. The client polls with the
2336
2367
  // opaque `device_code` returned by `/oauth/device/authorize`.
2337
- import_zod_openapi25.z.object({
2338
- grant_type: import_zod_openapi25.z.literal("urn:ietf:params:oauth:grant-type:device_code"),
2339
- device_code: import_zod_openapi25.z.string().min(1),
2340
- client_id: import_zod_openapi25.z.string().min(1)
2368
+ import_zod_openapi26.z.object({
2369
+ grant_type: import_zod_openapi26.z.literal("urn:ietf:params:oauth:grant-type:device_code"),
2370
+ device_code: import_zod_openapi26.z.string().min(1),
2371
+ client_id: import_zod_openapi26.z.string().min(1)
2341
2372
  })
2342
2373
  ]);
2343
2374
  var DEVICE_CODE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
2344
- var TokenResponseSchema = import_zod_openapi25.z.object({
2345
- access_token: import_zod_openapi25.z.string(),
2346
- token_type: import_zod_openapi25.z.literal("Bearer"),
2347
- expires_in: import_zod_openapi25.z.number(),
2348
- refresh_token: import_zod_openapi25.z.string(),
2349
- scope: import_zod_openapi25.z.string()
2350
- });
2351
- var RevokeRequestSchema = import_zod_openapi25.z.object({
2352
- token: import_zod_openapi25.z.string().min(1),
2353
- token_type_hint: import_zod_openapi25.z.string().optional()
2354
- });
2355
- var RevokeResponseSchema = import_zod_openapi25.z.object({});
2356
- var DeviceAuthorizeRequestSchema = import_zod_openapi25.z.object({
2357
- client_id: import_zod_openapi25.z.string().min(1),
2358
- scope: import_zod_openapi25.z.string().min(1)
2359
- });
2360
- var DeviceAuthorizeResponseSchema = import_zod_openapi25.z.object({
2361
- device_code: import_zod_openapi25.z.string(),
2362
- user_code: import_zod_openapi25.z.string(),
2363
- verification_uri: import_zod_openapi25.z.string(),
2364
- verification_uri_complete: import_zod_openapi25.z.string(),
2365
- expires_in: import_zod_openapi25.z.number(),
2366
- interval: import_zod_openapi25.z.number()
2367
- });
2368
- var DeviceVerifyRequestSchema = import_zod_openapi25.z.object({
2369
- user_code: import_zod_openapi25.z.string().min(1),
2370
- action: import_zod_openapi25.z.enum(["approve", "deny"])
2371
- });
2372
- var DeviceVerifyResponseSchema = import_zod_openapi25.z.object({
2373
- status: import_zod_openapi25.z.enum(["approved", "denied"])
2374
- });
2375
- var DeviceInfoResponseSchema = import_zod_openapi25.z.object({
2376
- client_id: import_zod_openapi25.z.string(),
2377
- scopes: import_zod_openapi25.z.array(import_zod_openapi25.z.string())
2375
+ var TokenResponseSchema = import_zod_openapi26.z.object({
2376
+ access_token: import_zod_openapi26.z.string(),
2377
+ token_type: import_zod_openapi26.z.literal("Bearer"),
2378
+ expires_in: import_zod_openapi26.z.number(),
2379
+ refresh_token: import_zod_openapi26.z.string(),
2380
+ scope: import_zod_openapi26.z.string()
2381
+ });
2382
+ var RevokeRequestSchema = import_zod_openapi26.z.object({
2383
+ token: import_zod_openapi26.z.string().min(1),
2384
+ token_type_hint: import_zod_openapi26.z.string().optional()
2385
+ });
2386
+ var RevokeResponseSchema = import_zod_openapi26.z.object({});
2387
+ var DeviceAuthorizeRequestSchema = import_zod_openapi26.z.object({
2388
+ client_id: import_zod_openapi26.z.string().min(1),
2389
+ scope: import_zod_openapi26.z.string().min(1)
2390
+ });
2391
+ var DeviceAuthorizeResponseSchema = import_zod_openapi26.z.object({
2392
+ device_code: import_zod_openapi26.z.string(),
2393
+ user_code: import_zod_openapi26.z.string(),
2394
+ verification_uri: import_zod_openapi26.z.string(),
2395
+ verification_uri_complete: import_zod_openapi26.z.string(),
2396
+ expires_in: import_zod_openapi26.z.number(),
2397
+ interval: import_zod_openapi26.z.number()
2398
+ });
2399
+ var DeviceVerifyRequestSchema = import_zod_openapi26.z.object({
2400
+ user_code: import_zod_openapi26.z.string().min(1),
2401
+ action: import_zod_openapi26.z.enum(["approve", "deny"])
2402
+ });
2403
+ var DeviceVerifyResponseSchema = import_zod_openapi26.z.object({
2404
+ status: import_zod_openapi26.z.enum(["approved", "denied"])
2405
+ });
2406
+ var DeviceInfoResponseSchema = import_zod_openapi26.z.object({
2407
+ client_id: import_zod_openapi26.z.string(),
2408
+ scopes: import_zod_openapi26.z.array(import_zod_openapi26.z.string())
2378
2409
  });
2379
2410
  var GRANT_TYPES_SUPPORTED = ["authorization_code", "refresh_token", DEVICE_CODE_GRANT_TYPE];
2380
- var DiscoveryResponseSchema = import_zod_openapi25.z.object({
2381
- issuer: import_zod_openapi25.z.string(),
2382
- authorization_endpoint: import_zod_openapi25.z.string(),
2383
- token_endpoint: import_zod_openapi25.z.string(),
2384
- revocation_endpoint: import_zod_openapi25.z.string(),
2385
- device_authorization_endpoint: import_zod_openapi25.z.string().optional(),
2386
- scopes_supported: import_zod_openapi25.z.array(import_zod_openapi25.z.string()),
2387
- response_types_supported: import_zod_openapi25.z.array(import_zod_openapi25.z.string()),
2388
- grant_types_supported: import_zod_openapi25.z.array(import_zod_openapi25.z.string()),
2389
- code_challenge_methods_supported: import_zod_openapi25.z.array(import_zod_openapi25.z.string()),
2390
- token_endpoint_auth_methods_supported: import_zod_openapi25.z.array(import_zod_openapi25.z.string())
2411
+ var DiscoveryResponseSchema = import_zod_openapi26.z.object({
2412
+ issuer: import_zod_openapi26.z.string(),
2413
+ authorization_endpoint: import_zod_openapi26.z.string(),
2414
+ token_endpoint: import_zod_openapi26.z.string(),
2415
+ revocation_endpoint: import_zod_openapi26.z.string(),
2416
+ device_authorization_endpoint: import_zod_openapi26.z.string().optional(),
2417
+ scopes_supported: import_zod_openapi26.z.array(import_zod_openapi26.z.string()),
2418
+ response_types_supported: import_zod_openapi26.z.array(import_zod_openapi26.z.string()),
2419
+ grant_types_supported: import_zod_openapi26.z.array(import_zod_openapi26.z.string()),
2420
+ code_challenge_methods_supported: import_zod_openapi26.z.array(import_zod_openapi26.z.string()),
2421
+ token_endpoint_auth_methods_supported: import_zod_openapi26.z.array(import_zod_openapi26.z.string())
2391
2422
  });
2392
2423
  var DISCOVERY_SCOPES_SUPPORTED = ISSUABLE_SCOPES;
2393
2424
 
2394
2425
  // src/contracts/oauth.ts
2395
- var authorizeRoute = (0, import_zod_openapi26.createRoute)({
2426
+ var authorizeRoute = (0, import_zod_openapi27.createRoute)({
2396
2427
  method: "post",
2397
2428
  path: "/oauth/authorize",
2398
2429
  tags: ["oauth"],
@@ -2422,7 +2453,7 @@ var authorizeRoute = (0, import_zod_openapi26.createRoute)({
2422
2453
  }
2423
2454
  }
2424
2455
  });
2425
- var tokenRoute = (0, import_zod_openapi26.createRoute)({
2456
+ var tokenRoute = (0, import_zod_openapi27.createRoute)({
2426
2457
  method: "post",
2427
2458
  path: "/oauth/token",
2428
2459
  tags: ["oauth"],
@@ -2454,7 +2485,7 @@ var tokenRoute = (0, import_zod_openapi26.createRoute)({
2454
2485
  }
2455
2486
  }
2456
2487
  });
2457
- var revokeRoute = (0, import_zod_openapi26.createRoute)({
2488
+ var revokeRoute = (0, import_zod_openapi27.createRoute)({
2458
2489
  method: "post",
2459
2490
  path: "/oauth/revoke",
2460
2491
  tags: ["oauth"],
@@ -2474,7 +2505,7 @@ var revokeRoute = (0, import_zod_openapi26.createRoute)({
2474
2505
  }
2475
2506
  }
2476
2507
  });
2477
- var discoveryRoute = (0, import_zod_openapi26.createRoute)({
2508
+ var discoveryRoute = (0, import_zod_openapi27.createRoute)({
2478
2509
  method: "get",
2479
2510
  path: "/.well-known/oauth-authorization-server",
2480
2511
  tags: ["oauth"],
@@ -2486,7 +2517,7 @@ var discoveryRoute = (0, import_zod_openapi26.createRoute)({
2486
2517
  }
2487
2518
  }
2488
2519
  });
2489
- var deviceAuthorizeRoute = (0, import_zod_openapi26.createRoute)({
2520
+ var deviceAuthorizeRoute = (0, import_zod_openapi27.createRoute)({
2490
2521
  method: "post",
2491
2522
  path: "/oauth/device/authorize",
2492
2523
  tags: ["oauth"],
@@ -2514,7 +2545,7 @@ var deviceAuthorizeRoute = (0, import_zod_openapi26.createRoute)({
2514
2545
  }
2515
2546
  }
2516
2547
  });
2517
- var deviceInfoRoute = (0, import_zod_openapi26.createRoute)({
2548
+ var deviceInfoRoute = (0, import_zod_openapi27.createRoute)({
2518
2549
  method: "get",
2519
2550
  path: "/oauth/device",
2520
2551
  tags: ["oauth"],
@@ -2523,7 +2554,7 @@ var deviceInfoRoute = (0, import_zod_openapi26.createRoute)({
2523
2554
  // scopes so the web consent screen can show them before approval. Reveals
2524
2555
  // no secret. Unknown / expired / non-pending → 404 (PHASE4-Q9 option A).
2525
2556
  request: {
2526
- query: import_zod_openapi26.z.object({ user_code: import_zod_openapi26.z.string().min(1) })
2557
+ query: import_zod_openapi27.z.object({ user_code: import_zod_openapi27.z.string().min(1) })
2527
2558
  },
2528
2559
  responses: {
2529
2560
  200: {
@@ -2536,7 +2567,7 @@ var deviceInfoRoute = (0, import_zod_openapi26.createRoute)({
2536
2567
  }
2537
2568
  }
2538
2569
  });
2539
- var deviceVerifyRoute = (0, import_zod_openapi26.createRoute)({
2570
+ var deviceVerifyRoute = (0, import_zod_openapi27.createRoute)({
2540
2571
  method: "post",
2541
2572
  path: "/oauth/device/verify",
2542
2573
  tags: ["oauth"],
@@ -2577,95 +2608,95 @@ var oauthRoutes = {
2577
2608
  };
2578
2609
 
2579
2610
  // src/contracts/user.ts
2580
- var import_zod_openapi29 = require("@hono/zod-openapi");
2611
+ var import_zod_openapi30 = require("@hono/zod-openapi");
2581
2612
 
2582
2613
  // src/schemas/user.ts
2583
- var import_zod_openapi28 = require("@hono/zod-openapi");
2614
+ var import_zod_openapi29 = require("@hono/zod-openapi");
2584
2615
 
2585
2616
  // src/schemas/bookmark.ts
2586
- var import_zod_openapi27 = require("@hono/zod-openapi");
2587
- var BookmarkSchema = import_zod_openapi27.z.object({
2588
- _id: import_zod_openapi27.z.string(),
2617
+ var import_zod_openapi28 = require("@hono/zod-openapi");
2618
+ var BookmarkSchema = import_zod_openapi28.z.object({
2619
+ _id: import_zod_openapi28.z.string(),
2589
2620
  page: PageSchema,
2590
- user: import_zod_openapi27.z.union([import_zod_openapi27.z.string(), UserPublicSchema]),
2591
- createdAt: import_zod_openapi27.z.string()
2621
+ user: import_zod_openapi28.z.union([import_zod_openapi28.z.string(), UserPublicSchema]),
2622
+ createdAt: import_zod_openapi28.z.string()
2592
2623
  });
2593
- var GetBookmarkRequestSchema = import_zod_openapi27.z.object({
2594
- page_id: import_zod_openapi27.z.string()
2624
+ var GetBookmarkRequestSchema = import_zod_openapi28.z.object({
2625
+ page_id: import_zod_openapi28.z.string()
2595
2626
  });
2596
- var BookmarkResponseSchema = import_zod_openapi27.z.object({
2627
+ var BookmarkResponseSchema = import_zod_openapi28.z.object({
2597
2628
  bookmark: BookmarkSchema.nullable()
2598
2629
  });
2599
- var ListMyBookmarksResponseSchema = import_zod_openapi27.z.object({
2600
- bookmarks: import_zod_openapi27.z.array(BookmarkSchema),
2630
+ var ListMyBookmarksResponseSchema = import_zod_openapi28.z.object({
2631
+ bookmarks: import_zod_openapi28.z.array(BookmarkSchema),
2601
2632
  pager: PagerSchema,
2602
- total: import_zod_openapi27.z.number()
2633
+ total: import_zod_openapi28.z.number()
2603
2634
  });
2604
- var AddBookmarkRequestSchema = import_zod_openapi27.z.object({
2605
- page_id: import_zod_openapi27.z.string()
2635
+ var AddBookmarkRequestSchema = import_zod_openapi28.z.object({
2636
+ page_id: import_zod_openapi28.z.string()
2606
2637
  });
2607
- var RemoveBookmarkRequestSchema = import_zod_openapi27.z.object({
2608
- page_id: import_zod_openapi27.z.string()
2638
+ var RemoveBookmarkRequestSchema = import_zod_openapi28.z.object({
2639
+ page_id: import_zod_openapi28.z.string()
2609
2640
  });
2610
- var RemoveBookmarkResponseSchema = import_zod_openapi27.z.object({
2611
- ok: import_zod_openapi27.z.literal(true)
2641
+ var RemoveBookmarkResponseSchema = import_zod_openapi28.z.object({
2642
+ ok: import_zod_openapi28.z.literal(true)
2612
2643
  });
2613
2644
 
2614
2645
  // src/schemas/user.ts
2615
- var UserStatusSchema = import_zod_openapi28.z.enum(["1", "2", "3", "4", "5"]).transform((val) => Number(val));
2646
+ var UserStatusSchema = import_zod_openapi29.z.enum(["1", "2", "3", "4", "5"]).transform((val) => Number(val));
2616
2647
  var UserStatusEnum = UserPublicStatus;
2617
- var UserLanguageSchema = import_zod_openapi28.z.enum(["en", "ja"]);
2618
- var PaginationRequestSchema = import_zod_openapi28.z.object({
2619
- limit: import_zod_openapi28.z.coerce.number().optional().default(50),
2620
- offset: import_zod_openapi28.z.coerce.number().optional().default(0)
2621
- });
2622
- var UserListItemSchema = import_zod_openapi28.z.object({
2623
- _id: import_zod_openapi28.z.string(),
2624
- username: import_zod_openapi28.z.string(),
2625
- name: import_zod_openapi28.z.string(),
2626
- image: import_zod_openapi28.z.string().nullable().optional()
2627
- });
2628
- var ListUsersRequestSchema = import_zod_openapi28.z.object({
2629
- q: import_zod_openapi28.z.string().optional(),
2648
+ var UserLanguageSchema = import_zod_openapi29.z.enum(["en", "ja"]);
2649
+ var PaginationRequestSchema = import_zod_openapi29.z.object({
2650
+ limit: import_zod_openapi29.z.coerce.number().optional().default(50),
2651
+ offset: import_zod_openapi29.z.coerce.number().optional().default(0)
2652
+ });
2653
+ var UserListItemSchema = import_zod_openapi29.z.object({
2654
+ _id: import_zod_openapi29.z.string(),
2655
+ username: import_zod_openapi29.z.string(),
2656
+ name: import_zod_openapi29.z.string(),
2657
+ image: import_zod_openapi29.z.string().nullable().optional()
2658
+ });
2659
+ var ListUsersRequestSchema = import_zod_openapi29.z.object({
2660
+ q: import_zod_openapi29.z.string().optional(),
2630
2661
  // Cap the page size so a client can't request the whole user table in one
2631
2662
  // unbounded find+sort (mirrors the page-list `limit` guard).
2632
- limit: import_zod_openapi28.z.coerce.number().int().min(1).max(100).optional().default(24),
2633
- offset: import_zod_openapi28.z.coerce.number().int().min(0).optional().default(0)
2663
+ limit: import_zod_openapi29.z.coerce.number().int().min(1).max(100).optional().default(24),
2664
+ offset: import_zod_openapi29.z.coerce.number().int().min(0).optional().default(0)
2634
2665
  });
2635
- var ListUsersResponseSchema = import_zod_openapi28.z.object({
2636
- users: import_zod_openapi28.z.array(UserListItemSchema),
2666
+ var ListUsersResponseSchema = import_zod_openapi29.z.object({
2667
+ users: import_zod_openapi29.z.array(UserListItemSchema),
2637
2668
  pager: PagerSchema,
2638
- total: import_zod_openapi28.z.number()
2669
+ total: import_zod_openapi29.z.number()
2639
2670
  });
2640
- var UserPageResponseSchema = import_zod_openapi28.z.object({
2671
+ var UserPageResponseSchema = import_zod_openapi29.z.object({
2641
2672
  user: UserPublicSchema,
2642
2673
  // Page statistics
2643
- createdPagesCount: import_zod_openapi28.z.number(),
2644
- bookmarksCount: import_zod_openapi28.z.number(),
2674
+ createdPagesCount: import_zod_openapi29.z.number(),
2675
+ bookmarksCount: import_zod_openapi29.z.number(),
2645
2676
  // Optionally include recent items for initial display
2646
- recentPages: import_zod_openapi28.z.array(PageSchema).optional(),
2647
- recentBookmarks: import_zod_openapi28.z.array(BookmarkSchema).optional()
2677
+ recentPages: import_zod_openapi29.z.array(PageSchema).optional(),
2678
+ recentBookmarks: import_zod_openapi29.z.array(BookmarkSchema).optional()
2648
2679
  });
2649
- var UserBookmarksResponseSchema = import_zod_openapi28.z.object({
2650
- bookmarks: import_zod_openapi28.z.array(BookmarkSchema),
2680
+ var UserBookmarksResponseSchema = import_zod_openapi29.z.object({
2681
+ bookmarks: import_zod_openapi29.z.array(BookmarkSchema),
2651
2682
  pager: PagerSchema,
2652
- total: import_zod_openapi28.z.number()
2683
+ total: import_zod_openapi29.z.number()
2653
2684
  });
2654
- var UserPagesResponseSchema = import_zod_openapi28.z.object({
2655
- pages: import_zod_openapi28.z.array(PageSchema),
2685
+ var UserPagesResponseSchema = import_zod_openapi29.z.object({
2686
+ pages: import_zod_openapi29.z.array(PageSchema),
2656
2687
  pager: PagerSchema,
2657
- total: import_zod_openapi28.z.number()
2688
+ total: import_zod_openapi29.z.number()
2658
2689
  });
2659
- var UserNotFoundErrorSchema = import_zod_openapi28.z.object({
2660
- error: import_zod_openapi28.z.object({
2661
- code: import_zod_openapi28.z.literal("USER_NOT_FOUND"),
2662
- message: import_zod_openapi28.z.literal("User not found")
2690
+ var UserNotFoundErrorSchema = import_zod_openapi29.z.object({
2691
+ error: import_zod_openapi29.z.object({
2692
+ code: import_zod_openapi29.z.literal("USER_NOT_FOUND"),
2693
+ message: import_zod_openapi29.z.literal("User not found")
2663
2694
  })
2664
2695
  });
2665
2696
 
2666
2697
  // src/contracts/user.ts
2667
- var UsernameParamSchema = import_zod_openapi29.z.object({ username: import_zod_openapi29.z.string() });
2668
- var getUserPageRoute = (0, import_zod_openapi29.createRoute)({
2698
+ var UsernameParamSchema = import_zod_openapi30.z.object({ username: import_zod_openapi30.z.string() });
2699
+ var getUserPageRoute = (0, import_zod_openapi30.createRoute)({
2669
2700
  method: "get",
2670
2701
  path: "/user/{username}",
2671
2702
  tags: ["user"],
@@ -2693,7 +2724,7 @@ var getUserPageRoute = (0, import_zod_openapi29.createRoute)({
2693
2724
  }
2694
2725
  }
2695
2726
  });
2696
- var getUserBookmarksRoute = (0, import_zod_openapi29.createRoute)({
2727
+ var getUserBookmarksRoute = (0, import_zod_openapi30.createRoute)({
2697
2728
  method: "get",
2698
2729
  path: "/user/{username}/bookmarks",
2699
2730
  tags: ["user"],
@@ -2722,7 +2753,7 @@ var getUserBookmarksRoute = (0, import_zod_openapi29.createRoute)({
2722
2753
  }
2723
2754
  }
2724
2755
  });
2725
- var getUserPagesRoute = (0, import_zod_openapi29.createRoute)({
2756
+ var getUserPagesRoute = (0, import_zod_openapi30.createRoute)({
2726
2757
  method: "get",
2727
2758
  path: "/user/{username}/pages",
2728
2759
  tags: ["user"],
@@ -2751,7 +2782,7 @@ var getUserPagesRoute = (0, import_zod_openapi29.createRoute)({
2751
2782
  }
2752
2783
  }
2753
2784
  });
2754
- var listMembersRoute = (0, import_zod_openapi29.createRoute)({
2785
+ var listMembersRoute = (0, import_zod_openapi30.createRoute)({
2755
2786
  method: "get",
2756
2787
  path: "/users",
2757
2788
  tags: ["user"],
@@ -2783,8 +2814,8 @@ var userRoutes = {
2783
2814
  };
2784
2815
 
2785
2816
  // src/contracts/bookmark.ts
2786
- var import_zod_openapi30 = require("@hono/zod-openapi");
2787
- var getBookmarkRoute = (0, import_zod_openapi30.createRoute)({
2817
+ var import_zod_openapi31 = require("@hono/zod-openapi");
2818
+ var getBookmarkRoute = (0, import_zod_openapi31.createRoute)({
2788
2819
  method: "get",
2789
2820
  path: "/bookmarks",
2790
2821
  tags: ["bookmark"],
@@ -2812,7 +2843,7 @@ var getBookmarkRoute = (0, import_zod_openapi30.createRoute)({
2812
2843
  }
2813
2844
  }
2814
2845
  });
2815
- var listMyBookmarksRoute = (0, import_zod_openapi30.createRoute)({
2846
+ var listMyBookmarksRoute = (0, import_zod_openapi31.createRoute)({
2816
2847
  method: "get",
2817
2848
  path: "/bookmarks/me",
2818
2849
  tags: ["bookmark"],
@@ -2836,7 +2867,7 @@ var listMyBookmarksRoute = (0, import_zod_openapi30.createRoute)({
2836
2867
  }
2837
2868
  }
2838
2869
  });
2839
- var addBookmarkRoute = (0, import_zod_openapi30.createRoute)({
2870
+ var addBookmarkRoute = (0, import_zod_openapi31.createRoute)({
2840
2871
  method: "post",
2841
2872
  path: "/bookmarks",
2842
2873
  tags: ["bookmark"],
@@ -2866,7 +2897,7 @@ var addBookmarkRoute = (0, import_zod_openapi30.createRoute)({
2866
2897
  }
2867
2898
  }
2868
2899
  });
2869
- var removeBookmarkRoute = (0, import_zod_openapi30.createRoute)({
2900
+ var removeBookmarkRoute = (0, import_zod_openapi31.createRoute)({
2870
2901
  method: "delete",
2871
2902
  path: "/bookmarks",
2872
2903
  tags: ["bookmark"],
@@ -2904,41 +2935,41 @@ var bookmarkRoutes = {
2904
2935
  };
2905
2936
 
2906
2937
  // src/contracts/backlink.ts
2907
- var import_zod_openapi32 = require("@hono/zod-openapi");
2938
+ var import_zod_openapi33 = require("@hono/zod-openapi");
2908
2939
 
2909
2940
  // src/schemas/backlink.ts
2910
- var import_zod_openapi31 = require("@hono/zod-openapi");
2911
- var ObjectIdString = import_zod_openapi31.z.string().regex(/^[0-9a-f]{24}$/, "Invalid ObjectId");
2912
- var BacklinkFromPageSchema = import_zod_openapi31.z.object({
2913
- _id: import_zod_openapi31.z.string(),
2914
- path: import_zod_openapi31.z.string()
2941
+ var import_zod_openapi32 = require("@hono/zod-openapi");
2942
+ var ObjectIdString = import_zod_openapi32.z.string().regex(/^[0-9a-f]{24}$/, "Invalid ObjectId");
2943
+ var BacklinkFromPageSchema = import_zod_openapi32.z.object({
2944
+ _id: import_zod_openapi32.z.string(),
2945
+ path: import_zod_openapi32.z.string()
2915
2946
  });
2916
- var BacklinkFromRevisionSchema = import_zod_openapi31.z.object({
2917
- _id: import_zod_openapi31.z.string(),
2947
+ var BacklinkFromRevisionSchema = import_zod_openapi32.z.object({
2948
+ _id: import_zod_openapi32.z.string(),
2918
2949
  author: UserPublicSchema.nullable().optional()
2919
2950
  });
2920
- var BacklinkSchema = import_zod_openapi31.z.object({
2921
- _id: import_zod_openapi31.z.string(),
2951
+ var BacklinkSchema = import_zod_openapi32.z.object({
2952
+ _id: import_zod_openapi32.z.string(),
2922
2953
  // The destination page's id (the page being linked TO). Always the
2923
2954
  // page passed in the request, but echoed for cache-key parity with the
2924
2955
  // legacy response.
2925
- page: import_zod_openapi31.z.string(),
2956
+ page: import_zod_openapi32.z.string(),
2926
2957
  fromPage: BacklinkFromPageSchema,
2927
2958
  fromRevision: BacklinkFromRevisionSchema,
2928
- updatedAt: import_zod_openapi31.z.string()
2959
+ updatedAt: import_zod_openapi32.z.string()
2929
2960
  });
2930
- var GetBacklinksRequestSchema = import_zod_openapi31.z.object({
2961
+ var GetBacklinksRequestSchema = import_zod_openapi32.z.object({
2931
2962
  page_id: ObjectIdString,
2932
- limit: import_zod_openapi31.z.coerce.number().int().min(1).max(100).optional().default(20),
2933
- offset: import_zod_openapi31.z.coerce.number().int().min(0).optional().default(0)
2963
+ limit: import_zod_openapi32.z.coerce.number().int().min(1).max(100).optional().default(20),
2964
+ offset: import_zod_openapi32.z.coerce.number().int().min(0).optional().default(0)
2934
2965
  });
2935
- var GetBacklinksResponseSchema = import_zod_openapi31.z.object({
2936
- backlinks: import_zod_openapi31.z.array(BacklinkSchema),
2937
- hasNext: import_zod_openapi31.z.boolean()
2966
+ var GetBacklinksResponseSchema = import_zod_openapi32.z.object({
2967
+ backlinks: import_zod_openapi32.z.array(BacklinkSchema),
2968
+ hasNext: import_zod_openapi32.z.boolean()
2938
2969
  });
2939
2970
 
2940
2971
  // src/contracts/backlink.ts
2941
- var getBacklinksRoute = (0, import_zod_openapi32.createRoute)({
2972
+ var getBacklinksRoute = (0, import_zod_openapi33.createRoute)({
2942
2973
  method: "get",
2943
2974
  path: "/backlinks",
2944
2975
  tags: ["backlink"],
@@ -2959,6 +2990,10 @@ var getBacklinksRoute = (0, import_zod_openapi32.createRoute)({
2959
2990
  401: {
2960
2991
  description: "Authentication required",
2961
2992
  content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
2993
+ },
2994
+ 404: {
2995
+ description: "Page not found or not granted",
2996
+ content: { "application/json": { schema: PageNotFoundErrorSchema } }
2962
2997
  }
2963
2998
  }
2964
2999
  });
@@ -2967,59 +3002,59 @@ var backlinkRoutes = {
2967
3002
  };
2968
3003
 
2969
3004
  // src/contracts/comment.ts
2970
- var import_zod_openapi34 = require("@hono/zod-openapi");
3005
+ var import_zod_openapi35 = require("@hono/zod-openapi");
2971
3006
 
2972
3007
  // src/schemas/comment.ts
2973
- var import_zod_openapi33 = require("@hono/zod-openapi");
2974
- var CommentSchema = import_zod_openapi33.z.object({
2975
- _id: import_zod_openapi33.z.string(),
2976
- page: import_zod_openapi33.z.string(),
3008
+ var import_zod_openapi34 = require("@hono/zod-openapi");
3009
+ var CommentSchema = import_zod_openapi34.z.object({
3010
+ _id: import_zod_openapi34.z.string(),
3011
+ page: import_zod_openapi34.z.string(),
2977
3012
  // creator is populated to a user object on the API side; allow string fallback for safety
2978
- creator: import_zod_openapi33.z.union([import_zod_openapi33.z.string(), PageUserSchema]).nullable(),
2979
- revision: import_zod_openapi33.z.string(),
2980
- comment: import_zod_openapi33.z.string(),
2981
- commentPosition: import_zod_openapi33.z.number().default(-1),
2982
- createdAt: import_zod_openapi33.z.string()
2983
- });
2984
- var ListCommentsRequestSchema = import_zod_openapi33.z.object({
2985
- page_id: import_zod_openapi33.z.string().optional(),
2986
- revision_id: import_zod_openapi33.z.string().optional()
2987
- });
2988
- var ListCommentsResponseSchema = import_zod_openapi33.z.object({
2989
- comments: import_zod_openapi33.z.array(CommentSchema)
2990
- });
2991
- var AddCommentRequestSchema = import_zod_openapi33.z.object({
2992
- page_id: import_zod_openapi33.z.string().min(1, "page_id is required"),
2993
- revision_id: import_zod_openapi33.z.string().min(1, "revision_id is required"),
2994
- comment: import_zod_openapi33.z.string().min(1, "comment is required"),
2995
- comment_position: import_zod_openapi33.z.number().int().optional()
2996
- });
2997
- var AddCommentResponseSchema = import_zod_openapi33.z.object({
3013
+ creator: import_zod_openapi34.z.union([import_zod_openapi34.z.string(), PageUserSchema]).nullable(),
3014
+ revision: import_zod_openapi34.z.string(),
3015
+ comment: import_zod_openapi34.z.string(),
3016
+ commentPosition: import_zod_openapi34.z.number().default(-1),
3017
+ createdAt: import_zod_openapi34.z.string()
3018
+ });
3019
+ var ListCommentsRequestSchema = import_zod_openapi34.z.object({
3020
+ page_id: import_zod_openapi34.z.string().optional(),
3021
+ revision_id: import_zod_openapi34.z.string().optional()
3022
+ });
3023
+ var ListCommentsResponseSchema = import_zod_openapi34.z.object({
3024
+ comments: import_zod_openapi34.z.array(CommentSchema)
3025
+ });
3026
+ var AddCommentRequestSchema = import_zod_openapi34.z.object({
3027
+ page_id: import_zod_openapi34.z.string().min(1, "page_id is required"),
3028
+ revision_id: import_zod_openapi34.z.string().min(1, "revision_id is required"),
3029
+ comment: import_zod_openapi34.z.string().min(1, "comment is required"),
3030
+ comment_position: import_zod_openapi34.z.number().int().optional()
3031
+ });
3032
+ var AddCommentResponseSchema = import_zod_openapi34.z.object({
2998
3033
  comment: CommentSchema,
2999
- newlyWatching: import_zod_openapi33.z.boolean()
3034
+ newlyWatching: import_zod_openapi34.z.boolean()
3000
3035
  });
3001
- var DeleteCommentRequestSchema = import_zod_openapi33.z.object({
3002
- comment_id: import_zod_openapi33.z.string().min(1, "comment_id is required"),
3003
- page_id: import_zod_openapi33.z.string().min(1, "page_id is required")
3036
+ var DeleteCommentRequestSchema = import_zod_openapi34.z.object({
3037
+ comment_id: import_zod_openapi34.z.string().min(1, "comment_id is required"),
3038
+ page_id: import_zod_openapi34.z.string().min(1, "page_id is required")
3004
3039
  });
3005
- var DeleteCommentResponseSchema = import_zod_openapi33.z.object({
3006
- ok: import_zod_openapi33.z.literal(true)
3040
+ var DeleteCommentResponseSchema = import_zod_openapi34.z.object({
3041
+ ok: import_zod_openapi34.z.literal(true)
3007
3042
  });
3008
- var CommentNotFoundErrorSchema = import_zod_openapi33.z.object({
3009
- error: import_zod_openapi33.z.object({
3010
- code: import_zod_openapi33.z.literal("COMMENT_NOT_FOUND"),
3011
- message: import_zod_openapi33.z.literal("Comment not found")
3043
+ var CommentNotFoundErrorSchema = import_zod_openapi34.z.object({
3044
+ error: import_zod_openapi34.z.object({
3045
+ code: import_zod_openapi34.z.literal("COMMENT_NOT_FOUND"),
3046
+ message: import_zod_openapi34.z.literal("Comment not found")
3012
3047
  })
3013
3048
  });
3014
- var CommentInvalidRequestErrorSchema = import_zod_openapi33.z.object({
3015
- error: import_zod_openapi33.z.object({
3016
- code: import_zod_openapi33.z.literal("INVALID_REQUEST"),
3017
- message: import_zod_openapi33.z.string()
3049
+ var CommentInvalidRequestErrorSchema = import_zod_openapi34.z.object({
3050
+ error: import_zod_openapi34.z.object({
3051
+ code: import_zod_openapi34.z.literal("INVALID_REQUEST"),
3052
+ message: import_zod_openapi34.z.string()
3018
3053
  })
3019
3054
  });
3020
3055
 
3021
3056
  // src/contracts/comment.ts
3022
- var listCommentsRoute = (0, import_zod_openapi34.createRoute)({
3057
+ var listCommentsRoute = (0, import_zod_openapi35.createRoute)({
3023
3058
  method: "get",
3024
3059
  path: "/comments",
3025
3060
  tags: ["comment"],
@@ -3040,10 +3075,14 @@ var listCommentsRoute = (0, import_zod_openapi34.createRoute)({
3040
3075
  401: {
3041
3076
  description: "Authentication required",
3042
3077
  content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
3078
+ },
3079
+ 404: {
3080
+ description: "Page / revision not found, or the caller cannot access it (existence hidden)",
3081
+ content: { "application/json": { schema: PageNotFoundErrorSchema } }
3043
3082
  }
3044
3083
  }
3045
3084
  });
3046
- var addCommentRoute = (0, import_zod_openapi34.createRoute)({
3085
+ var addCommentRoute = (0, import_zod_openapi35.createRoute)({
3047
3086
  method: "post",
3048
3087
  path: "/comments",
3049
3088
  tags: ["comment"],
@@ -3073,7 +3112,7 @@ var addCommentRoute = (0, import_zod_openapi34.createRoute)({
3073
3112
  }
3074
3113
  }
3075
3114
  });
3076
- var deleteCommentRoute = (0, import_zod_openapi34.createRoute)({
3115
+ var deleteCommentRoute = (0, import_zod_openapi35.createRoute)({
3077
3116
  method: "delete",
3078
3117
  path: "/comments",
3079
3118
  tags: ["comment"],
@@ -3114,50 +3153,50 @@ var commentRoutes = {
3114
3153
  };
3115
3154
 
3116
3155
  // src/contracts/revision.ts
3117
- var import_zod_openapi36 = require("@hono/zod-openapi");
3156
+ var import_zod_openapi37 = require("@hono/zod-openapi");
3118
3157
 
3119
3158
  // src/schemas/revision.ts
3120
- var import_zod_openapi35 = require("@hono/zod-openapi");
3121
- var RevisionMetaSchema = import_zod_openapi35.z.object({
3122
- _id: import_zod_openapi35.z.string(),
3123
- path: import_zod_openapi35.z.string(),
3159
+ var import_zod_openapi36 = require("@hono/zod-openapi");
3160
+ var RevisionMetaSchema = import_zod_openapi36.z.object({
3161
+ _id: import_zod_openapi36.z.string(),
3162
+ path: import_zod_openapi36.z.string(),
3124
3163
  author: PageUserSchema.nullable().optional(),
3125
3164
  savedBy: PageUserSchema.nullable().optional(),
3126
- contributors: import_zod_openapi35.z.array(PageUserSchema).optional(),
3165
+ contributors: import_zod_openapi36.z.array(PageUserSchema).optional(),
3127
3166
  // RFC-0010 — edit channel. `web` (browser / collab editor) vs the API
3128
3167
  // token paths (`oauth` / `pat`). Absent on pre-RFC-0010 revisions. The
3129
3168
  // history UI shows an "app" chip for the token paths.
3130
- editVia: import_zod_openapi35.z.enum(["web", "oauth", "pat"]).optional(),
3131
- createdAt: import_zod_openapi35.z.string()
3169
+ editVia: import_zod_openapi36.z.enum(["web", "oauth", "pat"]).optional(),
3170
+ createdAt: import_zod_openapi36.z.string()
3132
3171
  });
3133
- var ListRevisionsRequestSchema = import_zod_openapi35.z.object({
3134
- limit: import_zod_openapi35.z.coerce.number().int().positive().max(200).optional().default(50),
3135
- offset: import_zod_openapi35.z.coerce.number().int().min(0).optional().default(0)
3172
+ var ListRevisionsRequestSchema = import_zod_openapi36.z.object({
3173
+ limit: import_zod_openapi36.z.coerce.number().int().positive().max(200).optional().default(50),
3174
+ offset: import_zod_openapi36.z.coerce.number().int().min(0).optional().default(0)
3136
3175
  });
3137
- var ListRevisionsResponseSchema = import_zod_openapi35.z.object({
3138
- revisions: import_zod_openapi35.z.array(RevisionMetaSchema),
3176
+ var ListRevisionsResponseSchema = import_zod_openapi36.z.object({
3177
+ revisions: import_zod_openapi36.z.array(RevisionMetaSchema),
3139
3178
  pager: PagerSchema
3140
3179
  });
3141
- var GetRevisionResponseSchema = import_zod_openapi35.z.object({
3180
+ var GetRevisionResponseSchema = import_zod_openapi36.z.object({
3142
3181
  revision: RevisionSchema
3143
3182
  });
3144
- var GetRevisionsRequestSchema = import_zod_openapi35.z.object({
3145
- ids: import_zod_openapi35.z.string().min(1, "ids is required")
3183
+ var GetRevisionsRequestSchema = import_zod_openapi36.z.object({
3184
+ ids: import_zod_openapi36.z.string().min(1, "ids is required")
3146
3185
  });
3147
- var GetRevisionsResponseSchema = import_zod_openapi35.z.object({
3148
- revisions: import_zod_openapi35.z.array(RevisionSchema)
3186
+ var GetRevisionsResponseSchema = import_zod_openapi36.z.object({
3187
+ revisions: import_zod_openapi36.z.array(RevisionSchema)
3149
3188
  });
3150
- var RevisionInvalidRequestErrorSchema = import_zod_openapi35.z.object({
3151
- error: import_zod_openapi35.z.object({
3152
- code: import_zod_openapi35.z.literal("INVALID_REQUEST"),
3153
- message: import_zod_openapi35.z.string()
3189
+ var RevisionInvalidRequestErrorSchema = import_zod_openapi36.z.object({
3190
+ error: import_zod_openapi36.z.object({
3191
+ code: import_zod_openapi36.z.literal("INVALID_REQUEST"),
3192
+ message: import_zod_openapi36.z.string()
3154
3193
  })
3155
3194
  });
3156
3195
 
3157
3196
  // src/contracts/revision.ts
3158
- var PageIdParamSchema = import_zod_openapi36.z.object({ page_id: import_zod_openapi36.z.string() });
3159
- var RevisionIdParamSchema = import_zod_openapi36.z.object({ id: import_zod_openapi36.z.string() });
3160
- var listRevisionsRoute = (0, import_zod_openapi36.createRoute)({
3197
+ var PageIdParamSchema = import_zod_openapi37.z.object({ page_id: import_zod_openapi37.z.string() });
3198
+ var RevisionIdParamSchema = import_zod_openapi37.z.object({ id: import_zod_openapi37.z.string() });
3199
+ var listRevisionsRoute = (0, import_zod_openapi37.createRoute)({
3161
3200
  method: "get",
3162
3201
  path: "/pages/{page_id}/revisions",
3163
3202
  tags: ["revision"],
@@ -3186,7 +3225,7 @@ var listRevisionsRoute = (0, import_zod_openapi36.createRoute)({
3186
3225
  }
3187
3226
  }
3188
3227
  });
3189
- var getRevisionsRoute = (0, import_zod_openapi36.createRoute)({
3228
+ var getRevisionsRoute = (0, import_zod_openapi37.createRoute)({
3190
3229
  method: "get",
3191
3230
  path: "/pages/revisions",
3192
3231
  tags: ["revision"],
@@ -3214,7 +3253,7 @@ var getRevisionsRoute = (0, import_zod_openapi36.createRoute)({
3214
3253
  }
3215
3254
  }
3216
3255
  });
3217
- var getRevisionRoute = (0, import_zod_openapi36.createRoute)({
3256
+ var getRevisionRoute = (0, import_zod_openapi37.createRoute)({
3218
3257
  method: "get",
3219
3258
  path: "/pages/revisions/{id}",
3220
3259
  tags: ["revision"],
@@ -3252,24 +3291,24 @@ var revisionRoutes = {
3252
3291
  };
3253
3292
 
3254
3293
  // src/contracts/notification.ts
3255
- var import_zod_openapi38 = require("@hono/zod-openapi");
3294
+ var import_zod_openapi39 = require("@hono/zod-openapi");
3256
3295
 
3257
3296
  // src/schemas/notification.ts
3258
- var import_zod_openapi37 = require("@hono/zod-openapi");
3259
- var NotificationStatusSchema = import_zod_openapi37.z.enum(["UNREAD", "UNOPENED", "OPENED"]);
3297
+ var import_zod_openapi38 = require("@hono/zod-openapi");
3298
+ var NotificationStatusSchema = import_zod_openapi38.z.enum(["UNREAD", "UNOPENED", "OPENED"]);
3260
3299
  var NotificationStatusEnum = {
3261
3300
  UNREAD: "UNREAD",
3262
3301
  UNOPENED: "UNOPENED",
3263
3302
  OPENED: "OPENED"
3264
3303
  };
3265
- var NotificationActionSchema = import_zod_openapi37.z.enum(["COMMENT", "LIKE", "MENTION", "UPDATE"]);
3304
+ var NotificationActionSchema = import_zod_openapi38.z.enum(["COMMENT", "LIKE", "MENTION", "UPDATE"]);
3266
3305
  var NotificationActionEnum = {
3267
3306
  COMMENT: "COMMENT",
3268
3307
  LIKE: "LIKE",
3269
3308
  MENTION: "MENTION",
3270
3309
  UPDATE: "UPDATE"
3271
3310
  };
3272
- var NotificationTargetModelSchema = import_zod_openapi37.z.enum(["Page"]);
3311
+ var NotificationTargetModelSchema = import_zod_openapi38.z.enum(["Page"]);
3273
3312
  var NotificationTargetModelEnum = {
3274
3313
  PAGE: "Page"
3275
3314
  };
@@ -3278,71 +3317,71 @@ var PageRefSchema = PageSchema.pick({
3278
3317
  path: true,
3279
3318
  status: true
3280
3319
  });
3281
- var NotificationSchema = import_zod_openapi37.z.object({
3282
- _id: import_zod_openapi37.z.string(),
3283
- user: import_zod_openapi37.z.string(),
3320
+ var NotificationSchema = import_zod_openapi38.z.object({
3321
+ _id: import_zod_openapi38.z.string(),
3322
+ user: import_zod_openapi38.z.string(),
3284
3323
  targetModel: NotificationTargetModelSchema,
3285
3324
  target: PageRefSchema,
3286
3325
  action: NotificationActionSchema,
3287
3326
  status: NotificationStatusSchema,
3288
- actionUsers: import_zod_openapi37.z.array(UserPublicSchema),
3289
- createdAt: import_zod_openapi37.z.string()
3327
+ actionUsers: import_zod_openapi38.z.array(UserPublicSchema),
3328
+ createdAt: import_zod_openapi38.z.string()
3290
3329
  });
3291
- var ListNotificationsRequestSchema = import_zod_openapi37.z.object({
3292
- limit: import_zod_openapi37.z.coerce.number().optional().default(10),
3293
- offset: import_zod_openapi37.z.coerce.number().optional().default(0)
3330
+ var ListNotificationsRequestSchema = import_zod_openapi38.z.object({
3331
+ limit: import_zod_openapi38.z.coerce.number().optional().default(10),
3332
+ offset: import_zod_openapi38.z.coerce.number().optional().default(0)
3294
3333
  });
3295
- var ListNotificationsResponseSchema = import_zod_openapi37.z.object({
3296
- notifications: import_zod_openapi37.z.array(NotificationSchema),
3334
+ var ListNotificationsResponseSchema = import_zod_openapi38.z.object({
3335
+ notifications: import_zod_openapi38.z.array(NotificationSchema),
3297
3336
  pager: PagerSchema
3298
3337
  });
3299
- var MarkAllAsReadResponseSchema = import_zod_openapi37.z.object({
3300
- ok: import_zod_openapi37.z.literal(true)
3338
+ var MarkAllAsReadResponseSchema = import_zod_openapi38.z.object({
3339
+ ok: import_zod_openapi38.z.literal(true)
3301
3340
  });
3302
- var OpenNotificationParamSchema = import_zod_openapi37.z.object({
3303
- id: import_zod_openapi37.z.string()
3341
+ var OpenNotificationParamSchema = import_zod_openapi38.z.object({
3342
+ id: import_zod_openapi38.z.string()
3304
3343
  });
3305
- var OpenNotificationResponseSchema = import_zod_openapi37.z.object({
3344
+ var OpenNotificationResponseSchema = import_zod_openapi38.z.object({
3306
3345
  notification: NotificationSchema
3307
3346
  });
3308
- var NotificationStatusResponseSchema = import_zod_openapi37.z.object({
3309
- count: import_zod_openapi37.z.number()
3347
+ var NotificationStatusResponseSchema = import_zod_openapi38.z.object({
3348
+ count: import_zod_openapi38.z.number()
3310
3349
  });
3311
- var NotificationNotFoundErrorSchema = import_zod_openapi37.z.object({
3312
- error: import_zod_openapi37.z.object({
3313
- code: import_zod_openapi37.z.literal("NOTIFICATION_NOT_FOUND"),
3314
- message: import_zod_openapi37.z.literal("Notification not found")
3350
+ var NotificationNotFoundErrorSchema = import_zod_openapi38.z.object({
3351
+ error: import_zod_openapi38.z.object({
3352
+ code: import_zod_openapi38.z.literal("NOTIFICATION_NOT_FOUND"),
3353
+ message: import_zod_openapi38.z.literal("Notification not found")
3315
3354
  })
3316
3355
  });
3317
- var NotificationsTokenResponseSchema = import_zod_openapi37.z.object({
3318
- token: import_zod_openapi37.z.string(),
3319
- selfUserId: import_zod_openapi37.z.string(),
3320
- expiresAt: import_zod_openapi37.z.string()
3356
+ var NotificationsTokenResponseSchema = import_zod_openapi38.z.object({
3357
+ token: import_zod_openapi38.z.string(),
3358
+ selfUserId: import_zod_openapi38.z.string(),
3359
+ expiresAt: import_zod_openapi38.z.string()
3321
3360
  });
3322
- var NotificationsTokenPayloadSchema = import_zod_openapi37.z.object({
3323
- selfUserId: import_zod_openapi37.z.string(),
3361
+ var NotificationsTokenPayloadSchema = import_zod_openapi38.z.object({
3362
+ selfUserId: import_zod_openapi38.z.string(),
3324
3363
  // Random UUID mixed into every signed token so two tokens minted
3325
3364
  // within the same second still produce byte-different JWT strings.
3326
3365
  // The browser uses the token as a React effect dependency to drive
3327
3366
  // the WebSocket reconnect — without `jti`, the iat/exp pair is
3328
3367
  // identical at second granularity and the dep stays stable.
3329
- jti: import_zod_openapi37.z.string().uuid(),
3330
- iat: import_zod_openapi37.z.number().int(),
3331
- exp: import_zod_openapi37.z.number().int()
3368
+ jti: import_zod_openapi38.z.string().uuid(),
3369
+ iat: import_zod_openapi38.z.number().int(),
3370
+ exp: import_zod_openapi38.z.number().int()
3332
3371
  });
3333
- var NotificationsChangedMessageSchema = import_zod_openapi37.z.object({
3334
- type: import_zod_openapi37.z.literal("changed")
3372
+ var NotificationsChangedMessageSchema = import_zod_openapi38.z.object({
3373
+ type: import_zod_openapi38.z.literal("changed")
3335
3374
  });
3336
3375
  var NotificationsServerMessageSchema = NotificationsChangedMessageSchema;
3337
3376
 
3338
3377
  // src/contracts/notification.ts
3339
- var NotificationInvalidRequestErrorSchema = import_zod_openapi38.z.object({
3340
- error: import_zod_openapi38.z.object({
3341
- code: import_zod_openapi38.z.literal("INVALID_REQUEST"),
3342
- message: import_zod_openapi38.z.string()
3378
+ var NotificationInvalidRequestErrorSchema = import_zod_openapi39.z.object({
3379
+ error: import_zod_openapi39.z.object({
3380
+ code: import_zod_openapi39.z.literal("INVALID_REQUEST"),
3381
+ message: import_zod_openapi39.z.string()
3343
3382
  })
3344
3383
  });
3345
- var listNotificationsRoute = (0, import_zod_openapi38.createRoute)({
3384
+ var listNotificationsRoute = (0, import_zod_openapi39.createRoute)({
3346
3385
  method: "get",
3347
3386
  path: "/notifications",
3348
3387
  tags: ["notification"],
@@ -3366,7 +3405,7 @@ var listNotificationsRoute = (0, import_zod_openapi38.createRoute)({
3366
3405
  }
3367
3406
  }
3368
3407
  });
3369
- var markAllAsReadRoute = (0, import_zod_openapi38.createRoute)({
3408
+ var markAllAsReadRoute = (0, import_zod_openapi39.createRoute)({
3370
3409
  method: "post",
3371
3410
  path: "/notifications/read",
3372
3411
  tags: ["notification"],
@@ -3387,7 +3426,7 @@ var markAllAsReadRoute = (0, import_zod_openapi38.createRoute)({
3387
3426
  }
3388
3427
  }
3389
3428
  });
3390
- var getUnreadCountRoute = (0, import_zod_openapi38.createRoute)({
3429
+ var getUnreadCountRoute = (0, import_zod_openapi39.createRoute)({
3391
3430
  method: "get",
3392
3431
  path: "/notifications/status",
3393
3432
  tags: ["notification"],
@@ -3408,7 +3447,7 @@ var getUnreadCountRoute = (0, import_zod_openapi38.createRoute)({
3408
3447
  }
3409
3448
  }
3410
3449
  });
3411
- var openNotificationRoute = (0, import_zod_openapi38.createRoute)({
3450
+ var openNotificationRoute = (0, import_zod_openapi39.createRoute)({
3412
3451
  method: "post",
3413
3452
  path: "/notifications/{id}/open",
3414
3453
  tags: ["notification"],
@@ -3440,7 +3479,7 @@ var openNotificationRoute = (0, import_zod_openapi38.createRoute)({
3440
3479
  }
3441
3480
  }
3442
3481
  });
3443
- var getNotificationsTokenRoute = (0, import_zod_openapi38.createRoute)({
3482
+ var getNotificationsTokenRoute = (0, import_zod_openapi39.createRoute)({
3444
3483
  method: "get",
3445
3484
  path: "/notifications/token",
3446
3485
  tags: ["notification"],
@@ -3475,26 +3514,60 @@ var notificationRoutes = {
3475
3514
  };
3476
3515
 
3477
3516
  // src/contracts/page.ts
3478
- var import_zod_openapi39 = require("@hono/zod-openapi");
3479
- var PageBadRequestErrorSchema = import_zod_openapi39.z.object({
3480
- error: import_zod_openapi39.z.object({
3481
- code: import_zod_openapi39.z.string(),
3482
- message: import_zod_openapi39.z.string()
3517
+ var import_zod_openapi41 = require("@hono/zod-openapi");
3518
+
3519
+ // src/schemas/autocomplete.ts
3520
+ var import_zod_openapi40 = require("@hono/zod-openapi");
3521
+ var AutocompleteRequestSchema = import_zod_openapi40.z.object({
3522
+ q: import_zod_openapi40.z.string().min(1).max(128),
3523
+ limit: import_zod_openapi40.z.coerce.number().int().min(1).max(25).optional().default(10),
3524
+ /**
3525
+ * How `q` is matched against the candidate text. `'substring'` (the
3526
+ * default, used by the editor's `@mention` / `[[wikilink]]` pickers)
3527
+ * keeps the historical anywhere-in-string match. `'prefix'` anchors
3528
+ * the match at the start — used by the "create page" modal, where the
3529
+ * user is building a `/`-rooted path and only true prefixes are valid
3530
+ * completions of what they have typed so far.
3531
+ */
3532
+ anchor: import_zod_openapi40.z.enum(["substring", "prefix"]).optional().default("substring")
3533
+ });
3534
+ var AutocompleteResultSchema = import_zod_openapi40.z.object({
3535
+ id: import_zod_openapi40.z.string(),
3536
+ label: import_zod_openapi40.z.string(),
3537
+ display: import_zod_openapi40.z.string(),
3538
+ avatar: import_zod_openapi40.z.string().nullable().optional(),
3539
+ modifiedAt: import_zod_openapi40.z.string().nullable().optional(),
3540
+ score: import_zod_openapi40.z.number()
3541
+ });
3542
+ var AutocompleteResponseSchema = import_zod_openapi40.z.object({
3543
+ results: import_zod_openapi40.z.array(AutocompleteResultSchema)
3544
+ });
3545
+ var AutocompleteRateLimitErrorSchema = import_zod_openapi40.z.object({
3546
+ error: import_zod_openapi40.z.literal("rate_limited"),
3547
+ message: import_zod_openapi40.z.string(),
3548
+ retryAfterSeconds: import_zod_openapi40.z.number()
3549
+ });
3550
+
3551
+ // src/contracts/page.ts
3552
+ var PageBadRequestErrorSchema = import_zod_openapi41.z.object({
3553
+ error: import_zod_openapi41.z.object({
3554
+ code: import_zod_openapi41.z.string(),
3555
+ message: import_zod_openapi41.z.string()
3483
3556
  })
3484
3557
  });
3485
- var DeletePageRequestSchema = import_zod_openapi39.z.object({
3486
- page_id: import_zod_openapi39.z.string(),
3487
- revision_id: import_zod_openapi39.z.string().optional(),
3488
- completely: import_zod_openapi39.z.boolean().optional()
3558
+ var DeletePageRequestSchema = import_zod_openapi41.z.object({
3559
+ page_id: import_zod_openapi41.z.string(),
3560
+ revision_id: import_zod_openapi41.z.string().optional(),
3561
+ completely: import_zod_openapi41.z.boolean().optional()
3489
3562
  });
3490
- var RevertDeletedPageRequestSchema = import_zod_openapi39.z.object({
3491
- page_id: import_zod_openapi39.z.string()
3563
+ var RevertDeletedPageRequestSchema = import_zod_openapi41.z.object({
3564
+ page_id: import_zod_openapi41.z.string()
3492
3565
  });
3493
- var PageIdBodySchema = import_zod_openapi39.z.object({
3494
- page_id: import_zod_openapi39.z.string()
3566
+ var PageIdBodySchema = import_zod_openapi41.z.object({
3567
+ page_id: import_zod_openapi41.z.string()
3495
3568
  });
3496
- var PageResponseSchema = import_zod_openapi39.z.object({ page: PageSchema });
3497
- var getPageRoute = (0, import_zod_openapi39.createRoute)({
3569
+ var PageResponseSchema = import_zod_openapi41.z.object({ page: PageSchema });
3570
+ var getPageRoute = (0, import_zod_openapi41.createRoute)({
3498
3571
  method: "get",
3499
3572
  path: "/pages",
3500
3573
  tags: ["page"],
@@ -3519,10 +3592,19 @@ var getPageRoute = (0, import_zod_openapi39.createRoute)({
3519
3592
  404: {
3520
3593
  description: "Page not found",
3521
3594
  content: { "application/json": { schema: PageNotFoundErrorSchema } }
3595
+ },
3596
+ // feature-live-page-sync-reconcile — separates a genuine unknown-error
3597
+ // 500 (e.g. a transient render-artifact / renderer failure) from the
3598
+ // not-found/not-granted 404/403 branches above, so a reconcile head-GET
3599
+ // can tell "page is really gone/forbidden" from "read failed, try
3600
+ // again later" (see `packages/api/src/hono/handlers/page.ts`'s split catch).
3601
+ 500: {
3602
+ description: "Internal server error",
3603
+ content: { "application/json": { schema: InternalServerErrorSchema } }
3522
3604
  }
3523
3605
  }
3524
3606
  });
3525
- var listPagesRoute = (0, import_zod_openapi39.createRoute)({
3607
+ var listPagesRoute = (0, import_zod_openapi41.createRoute)({
3526
3608
  method: "get",
3527
3609
  path: "/pages/list",
3528
3610
  tags: ["page"],
@@ -3542,7 +3624,7 @@ var listPagesRoute = (0, import_zod_openapi39.createRoute)({
3542
3624
  }
3543
3625
  }
3544
3626
  });
3545
- var listPageChildrenRoute = (0, import_zod_openapi39.createRoute)({
3627
+ var listPageChildrenRoute = (0, import_zod_openapi41.createRoute)({
3546
3628
  method: "get",
3547
3629
  path: "/pages/children",
3548
3630
  tags: ["page"],
@@ -3562,7 +3644,7 @@ var listPageChildrenRoute = (0, import_zod_openapi39.createRoute)({
3562
3644
  }
3563
3645
  }
3564
3646
  });
3565
- var createPageRoute = (0, import_zod_openapi39.createRoute)({
3647
+ var createPageRoute = (0, import_zod_openapi41.createRoute)({
3566
3648
  method: "post",
3567
3649
  path: "/pages",
3568
3650
  tags: ["page"],
@@ -3588,7 +3670,7 @@ var createPageRoute = (0, import_zod_openapi39.createRoute)({
3588
3670
  }
3589
3671
  }
3590
3672
  });
3591
- var updatePageRoute = (0, import_zod_openapi39.createRoute)({
3673
+ var updatePageRoute = (0, import_zod_openapi41.createRoute)({
3592
3674
  method: "put",
3593
3675
  path: "/pages",
3594
3676
  tags: ["page"],
@@ -3622,7 +3704,7 @@ var updatePageRoute = (0, import_zod_openapi39.createRoute)({
3622
3704
  }
3623
3705
  }
3624
3706
  });
3625
- var setPageGrantRoute = (0, import_zod_openapi39.createRoute)({
3707
+ var setPageGrantRoute = (0, import_zod_openapi41.createRoute)({
3626
3708
  method: "put",
3627
3709
  path: "/pages/grant",
3628
3710
  tags: ["page"],
@@ -3652,7 +3734,7 @@ var setPageGrantRoute = (0, import_zod_openapi39.createRoute)({
3652
3734
  }
3653
3735
  }
3654
3736
  });
3655
- var seenPageRoute = (0, import_zod_openapi39.createRoute)({
3737
+ var seenPageRoute = (0, import_zod_openapi41.createRoute)({
3656
3738
  method: "post",
3657
3739
  path: "/pages/seen",
3658
3740
  tags: ["page"],
@@ -3682,7 +3764,7 @@ var seenPageRoute = (0, import_zod_openapi39.createRoute)({
3682
3764
  }
3683
3765
  }
3684
3766
  });
3685
- var getSeenUsersRoute = (0, import_zod_openapi39.createRoute)({
3767
+ var getSeenUsersRoute = (0, import_zod_openapi41.createRoute)({
3686
3768
  method: "get",
3687
3769
  path: "/pages/seen-users",
3688
3770
  tags: ["page"],
@@ -3710,7 +3792,7 @@ var getSeenUsersRoute = (0, import_zod_openapi39.createRoute)({
3710
3792
  }
3711
3793
  }
3712
3794
  });
3713
- var likePageRoute = (0, import_zod_openapi39.createRoute)({
3795
+ var likePageRoute = (0, import_zod_openapi41.createRoute)({
3714
3796
  method: "post",
3715
3797
  path: "/pages/like",
3716
3798
  tags: ["page"],
@@ -3740,7 +3822,7 @@ var likePageRoute = (0, import_zod_openapi39.createRoute)({
3740
3822
  }
3741
3823
  }
3742
3824
  });
3743
- var unlikePageRoute = (0, import_zod_openapi39.createRoute)({
3825
+ var unlikePageRoute = (0, import_zod_openapi41.createRoute)({
3744
3826
  method: "post",
3745
3827
  path: "/pages/unlike",
3746
3828
  tags: ["page"],
@@ -3770,7 +3852,53 @@ var unlikePageRoute = (0, import_zod_openapi39.createRoute)({
3770
3852
  }
3771
3853
  }
3772
3854
  });
3773
- var getWatchStatusRoute = (0, import_zod_openapi39.createRoute)({
3855
+ var claimPageLinkAccessRoute = (0, import_zod_openapi41.createRoute)({
3856
+ method: "post",
3857
+ path: "/pages/link-access",
3858
+ tags: ["page"],
3859
+ security: [{ bearerAuth: [] }],
3860
+ summary: "Resolve a page by id, granting first-time link-share access to GRANT_RESTRICTED pages",
3861
+ request: {
3862
+ body: {
3863
+ content: { "application/json": { schema: PageIdBodySchema } }
3864
+ }
3865
+ },
3866
+ responses: {
3867
+ 200: {
3868
+ description: "The resolved page, with `granted` telling whether this call just added the caller to grantedUsers",
3869
+ content: { "application/json": { schema: ClaimPageLinkAccessResponseSchema } }
3870
+ },
3871
+ 400: {
3872
+ description: "Invalid page_id",
3873
+ content: { "application/json": { schema: InvalidPageIdErrorSchema } }
3874
+ },
3875
+ 401: {
3876
+ description: "Authentication required",
3877
+ content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
3878
+ },
3879
+ 403: {
3880
+ 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",
3881
+ content: {
3882
+ "application/json": {
3883
+ schema: import_zod_openapi41.z.union([PageNotGrantedErrorSchema, InsufficientScopeErrorSchema])
3884
+ }
3885
+ }
3886
+ },
3887
+ 404: {
3888
+ description: "Page not found",
3889
+ content: { "application/json": { schema: PageNotFoundErrorSchema } }
3890
+ },
3891
+ // Per-user rate limit (30 req/min) — same wire shape as autocomplete's
3892
+ // 429 (`{ error: 'rate_limited', message, retryAfterSeconds }`), reused
3893
+ // rather than duplicated (see the `AutocompleteRateLimitErrorSchema`
3894
+ // import above).
3895
+ 429: {
3896
+ description: "Rate limit exceeded for POST /pages/link-access (per-user). Same wire shape as autocomplete rate limiting.",
3897
+ content: { "application/json": { schema: AutocompleteRateLimitErrorSchema } }
3898
+ }
3899
+ }
3900
+ });
3901
+ var getWatchStatusRoute = (0, import_zod_openapi41.createRoute)({
3774
3902
  method: "get",
3775
3903
  path: "/pages/watch",
3776
3904
  tags: ["page"],
@@ -3798,7 +3926,7 @@ var getWatchStatusRoute = (0, import_zod_openapi39.createRoute)({
3798
3926
  }
3799
3927
  }
3800
3928
  });
3801
- var setWatchStatusRoute = (0, import_zod_openapi39.createRoute)({
3929
+ var setWatchStatusRoute = (0, import_zod_openapi41.createRoute)({
3802
3930
  method: "put",
3803
3931
  path: "/pages/watch",
3804
3932
  tags: ["page"],
@@ -3828,7 +3956,7 @@ var setWatchStatusRoute = (0, import_zod_openapi39.createRoute)({
3828
3956
  }
3829
3957
  }
3830
3958
  });
3831
- var deletePageRoute = (0, import_zod_openapi39.createRoute)({
3959
+ var deletePageRoute = (0, import_zod_openapi41.createRoute)({
3832
3960
  method: "delete",
3833
3961
  path: "/pages",
3834
3962
  tags: ["page"],
@@ -3862,7 +3990,7 @@ var deletePageRoute = (0, import_zod_openapi39.createRoute)({
3862
3990
  }
3863
3991
  }
3864
3992
  });
3865
- var revertDeletedPageRoute = (0, import_zod_openapi39.createRoute)({
3993
+ var revertDeletedPageRoute = (0, import_zod_openapi41.createRoute)({
3866
3994
  method: "post",
3867
3995
  path: "/pages/revert",
3868
3996
  tags: ["page"],
@@ -3892,7 +4020,7 @@ var revertDeletedPageRoute = (0, import_zod_openapi39.createRoute)({
3892
4020
  }
3893
4021
  }
3894
4022
  });
3895
- var revertToRevisionRoute = (0, import_zod_openapi39.createRoute)({
4023
+ var revertToRevisionRoute = (0, import_zod_openapi41.createRoute)({
3896
4024
  method: "post",
3897
4025
  path: "/pages/revert-to-revision",
3898
4026
  tags: ["page"],
@@ -3922,7 +4050,7 @@ var revertToRevisionRoute = (0, import_zod_openapi39.createRoute)({
3922
4050
  }
3923
4051
  }
3924
4052
  });
3925
- var renamePageRoute = (0, import_zod_openapi39.createRoute)({
4053
+ var renamePageRoute = (0, import_zod_openapi41.createRoute)({
3926
4054
  method: "post",
3927
4055
  path: "/pages/rename",
3928
4056
  tags: ["page"],
@@ -3942,7 +4070,7 @@ var renamePageRoute = (0, import_zod_openapi39.createRoute)({
3942
4070
  description: "PAGE_INVALID_NAME / PAGE_EXISTS / PAGE_RENAME_FAILED / PAGE_RENAME_TREE_FAILED",
3943
4071
  content: {
3944
4072
  "application/json": {
3945
- schema: import_zod_openapi39.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
4073
+ schema: import_zod_openapi41.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
3946
4074
  }
3947
4075
  }
3948
4076
  },
@@ -3960,7 +4088,7 @@ var renamePageRoute = (0, import_zod_openapi39.createRoute)({
3960
4088
  }
3961
4089
  }
3962
4090
  });
3963
- var renameSubtreeRoute = (0, import_zod_openapi39.createRoute)({
4091
+ var renameSubtreeRoute = (0, import_zod_openapi41.createRoute)({
3964
4092
  method: "post",
3965
4093
  path: "/pages/rename-subtree",
3966
4094
  tags: ["page"],
@@ -3980,7 +4108,7 @@ var renameSubtreeRoute = (0, import_zod_openapi39.createRoute)({
3980
4108
  description: "PAGE_INVALID_NAME / PAGE_RENAME_TREE_FAILED (collisions, nothing to move, or partial failure)",
3981
4109
  content: {
3982
4110
  "application/json": {
3983
- schema: import_zod_openapi39.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
4111
+ schema: import_zod_openapi41.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
3984
4112
  }
3985
4113
  }
3986
4114
  },
@@ -4011,6 +4139,8 @@ var pageRoutes = {
4011
4139
  likePageRoute,
4012
4140
  // POST /pages/unlike — unlikePage
4013
4141
  unlikePageRoute,
4142
+ // POST /pages/link-access — claimPageLinkAccess (grant-on-first-access)
4143
+ claimPageLinkAccessRoute,
4014
4144
  // GET /pages/watch — getWatchStatus
4015
4145
  getWatchStatusRoute,
4016
4146
  // PUT /pages/watch — setWatchStatus
@@ -4028,19 +4158,19 @@ var pageRoutes = {
4028
4158
  };
4029
4159
 
4030
4160
  // src/contracts/page-preview.ts
4031
- var import_zod_openapi41 = require("@hono/zod-openapi");
4161
+ var import_zod_openapi43 = require("@hono/zod-openapi");
4032
4162
 
4033
4163
  // src/schemas/page-preview.ts
4034
- var import_zod_openapi40 = require("@hono/zod-openapi");
4035
- var PreviewPageRequestSchema = import_zod_openapi40.z.object({
4036
- body: import_zod_openapi40.z.string()
4164
+ var import_zod_openapi42 = require("@hono/zod-openapi");
4165
+ var PreviewPageRequestSchema = import_zod_openapi42.z.object({
4166
+ body: import_zod_openapi42.z.string()
4037
4167
  });
4038
- var PreviewPageResponseSchema = import_zod_openapi40.z.object({
4039
- renderedAst: import_zod_openapi40.z.unknown()
4168
+ var PreviewPageResponseSchema = import_zod_openapi42.z.object({
4169
+ renderedAst: import_zod_openapi42.z.unknown()
4040
4170
  });
4041
4171
 
4042
4172
  // src/contracts/page-preview.ts
4043
- var previewPageRoute = (0, import_zod_openapi41.createRoute)({
4173
+ var previewPageRoute = (0, import_zod_openapi43.createRoute)({
4044
4174
  method: "post",
4045
4175
  path: "/pages/preview",
4046
4176
  tags: ["page-preview"],
@@ -4071,11 +4201,11 @@ var pagePreviewRoutes = {
4071
4201
  };
4072
4202
 
4073
4203
  // src/contracts/page-collab.ts
4074
- var import_zod_openapi42 = require("@hono/zod-openapi");
4075
- var PageIdPathParamsSchema = import_zod_openapi42.z.object({
4076
- id: import_zod_openapi42.z.string().openapi({ description: "Page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
4204
+ var import_zod_openapi44 = require("@hono/zod-openapi");
4205
+ var PageIdPathParamsSchema = import_zod_openapi44.z.object({
4206
+ id: import_zod_openapi44.z.string().openapi({ description: "Page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
4077
4207
  });
4078
- var getYjsTokenRoute = (0, import_zod_openapi42.createRoute)({
4208
+ var getYjsTokenRoute = (0, import_zod_openapi44.createRoute)({
4079
4209
  method: "get",
4080
4210
  path: "/pages/{id}/yjs-token",
4081
4211
  tags: ["page-collab"],
@@ -4112,61 +4242,79 @@ var pageCollabRoutes = {
4112
4242
  };
4113
4243
 
4114
4244
  // src/contracts/presence.ts
4115
- var import_zod_openapi44 = require("@hono/zod-openapi");
4245
+ var import_zod_openapi46 = require("@hono/zod-openapi");
4116
4246
 
4117
4247
  // src/schemas/presence.ts
4118
- var import_zod_openapi43 = require("@hono/zod-openapi");
4119
- var PresenceTokenResponseSchema = import_zod_openapi43.z.object({
4120
- token: import_zod_openapi43.z.string(),
4121
- pageId: import_zod_openapi43.z.string(),
4122
- selfUserId: import_zod_openapi43.z.string(),
4123
- expiresAt: import_zod_openapi43.z.string()
4124
- });
4125
- var PresenceTokenPayloadSchema = import_zod_openapi43.z.object({
4126
- userId: import_zod_openapi43.z.string(),
4127
- pageId: import_zod_openapi43.z.string(),
4128
- iat: import_zod_openapi43.z.number().int(),
4129
- exp: import_zod_openapi43.z.number().int()
4130
- });
4131
- var PresenceViewerSchema = import_zod_openapi43.z.object({
4132
- userId: import_zod_openapi43.z.string(),
4133
- username: import_zod_openapi43.z.string(),
4134
- displayName: import_zod_openapi43.z.string(),
4135
- avatarUrl: import_zod_openapi43.z.string().nullable(),
4136
- isEditing: import_zod_openapi43.z.boolean(),
4137
- joinedAt: import_zod_openapi43.z.number().int()
4138
- });
4139
- var PresenceHeartbeatMessageSchema = import_zod_openapi43.z.object({
4140
- type: import_zod_openapi43.z.literal("heartbeat")
4248
+ var import_zod_openapi45 = require("@hono/zod-openapi");
4249
+ var PresenceTokenResponseSchema = import_zod_openapi45.z.object({
4250
+ token: import_zod_openapi45.z.string(),
4251
+ pageId: import_zod_openapi45.z.string(),
4252
+ selfUserId: import_zod_openapi45.z.string(),
4253
+ expiresAt: import_zod_openapi45.z.string()
4254
+ });
4255
+ var PresenceTokenPayloadSchema = import_zod_openapi45.z.object({
4256
+ userId: import_zod_openapi45.z.string(),
4257
+ pageId: import_zod_openapi45.z.string(),
4258
+ iat: import_zod_openapi45.z.number().int(),
4259
+ exp: import_zod_openapi45.z.number().int()
4260
+ });
4261
+ var PresenceViewerSchema = import_zod_openapi45.z.object({
4262
+ userId: import_zod_openapi45.z.string(),
4263
+ username: import_zod_openapi45.z.string(),
4264
+ displayName: import_zod_openapi45.z.string(),
4265
+ avatarUrl: import_zod_openapi45.z.string().nullable(),
4266
+ isEditing: import_zod_openapi45.z.boolean(),
4267
+ joinedAt: import_zod_openapi45.z.number().int()
4268
+ });
4269
+ var PresenceHeartbeatMessageSchema = import_zod_openapi45.z.object({
4270
+ type: import_zod_openapi45.z.literal("heartbeat")
4141
4271
  });
4142
4272
  var PresenceClientMessageSchema = PresenceHeartbeatMessageSchema;
4143
- var PresenceViewersMessageSchema = import_zod_openapi43.z.object({
4144
- type: import_zod_openapi43.z.literal("viewers"),
4145
- viewers: import_zod_openapi43.z.array(PresenceViewerSchema)
4146
- });
4147
- var PresenceServerMessageSchema = PresenceViewersMessageSchema;
4148
- var LikerSchema = import_zod_openapi43.z.object({
4149
- id: import_zod_openapi43.z.string(),
4150
- username: import_zod_openapi43.z.string(),
4151
- displayName: import_zod_openapi43.z.string(),
4152
- avatarUrl: import_zod_openapi43.z.string().nullable(),
4153
- likedAt: import_zod_openapi43.z.string().nullable()
4154
- });
4155
- var LikersResponseSchema = import_zod_openapi43.z.object({
4156
- users: import_zod_openapi43.z.array(LikerSchema),
4157
- totalCount: import_zod_openapi43.z.number().int().nonnegative()
4158
- });
4159
- var GetLikersRequestSchema = import_zod_openapi43.z.object({
4273
+ var PresenceViewersMessageSchema = import_zod_openapi45.z.object({
4274
+ type: import_zod_openapi45.z.literal("viewers"),
4275
+ viewers: import_zod_openapi45.z.array(PresenceViewerSchema)
4276
+ });
4277
+ var PresencePageUpdatedMessageSchema = import_zod_openapi45.z.object({
4278
+ type: import_zod_openapi45.z.literal("page-updated"),
4279
+ pageId: import_zod_openapi45.z.string(),
4280
+ revisionId: import_zod_openapi45.z.string(),
4281
+ editorUserId: import_zod_openapi45.z.string(),
4282
+ editorDisplayName: import_zod_openapi45.z.string()
4283
+ });
4284
+ var PresenceCommentChangedMessageSchema = import_zod_openapi45.z.object({
4285
+ type: import_zod_openapi45.z.literal("comment-changed"),
4286
+ pageId: import_zod_openapi45.z.string(),
4287
+ changeType: import_zod_openapi45.z.enum(["added", "removed"]),
4288
+ commentId: import_zod_openapi45.z.string(),
4289
+ actorUserId: import_zod_openapi45.z.string().optional()
4290
+ });
4291
+ var PresenceServerMessageSchema = import_zod_openapi45.z.discriminatedUnion("type", [
4292
+ PresenceViewersMessageSchema,
4293
+ PresencePageUpdatedMessageSchema,
4294
+ PresenceCommentChangedMessageSchema
4295
+ ]);
4296
+ var LikerSchema = import_zod_openapi45.z.object({
4297
+ id: import_zod_openapi45.z.string(),
4298
+ username: import_zod_openapi45.z.string(),
4299
+ displayName: import_zod_openapi45.z.string(),
4300
+ avatarUrl: import_zod_openapi45.z.string().nullable(),
4301
+ likedAt: import_zod_openapi45.z.string().nullable()
4302
+ });
4303
+ var LikersResponseSchema = import_zod_openapi45.z.object({
4304
+ users: import_zod_openapi45.z.array(LikerSchema),
4305
+ totalCount: import_zod_openapi45.z.number().int().nonnegative()
4306
+ });
4307
+ var GetLikersRequestSchema = import_zod_openapi45.z.object({
4160
4308
  // Optional cap on returned `users`. `totalCount` always reflects the
4161
4309
  // full count regardless of `limit`. Omit for the full list.
4162
- limit: import_zod_openapi43.z.coerce.number().int().positive().optional()
4310
+ limit: import_zod_openapi45.z.coerce.number().int().positive().optional()
4163
4311
  });
4164
4312
 
4165
4313
  // src/contracts/presence.ts
4166
- var PageIdPathParamsSchema2 = import_zod_openapi44.z.object({
4167
- id: import_zod_openapi44.z.string().openapi({ description: "Page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
4314
+ var PageIdPathParamsSchema2 = import_zod_openapi46.z.object({
4315
+ id: import_zod_openapi46.z.string().openapi({ description: "Page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
4168
4316
  });
4169
- var getPresenceTokenRoute = (0, import_zod_openapi44.createRoute)({
4317
+ var getPresenceTokenRoute = (0, import_zod_openapi46.createRoute)({
4170
4318
  method: "get",
4171
4319
  path: "/pages/{id}/presence-token",
4172
4320
  tags: ["presence"],
@@ -4198,7 +4346,7 @@ var getPresenceTokenRoute = (0, import_zod_openapi44.createRoute)({
4198
4346
  }
4199
4347
  }
4200
4348
  });
4201
- var getLikersRoute = (0, import_zod_openapi44.createRoute)({
4349
+ var getLikersRoute = (0, import_zod_openapi46.createRoute)({
4202
4350
  method: "get",
4203
4351
  path: "/pages/{id}/likers",
4204
4352
  tags: ["presence"],
@@ -4237,50 +4385,50 @@ var presenceRoutes = {
4237
4385
  };
4238
4386
 
4239
4387
  // src/contracts/draft.ts
4240
- var import_zod_openapi46 = require("@hono/zod-openapi");
4388
+ var import_zod_openapi48 = require("@hono/zod-openapi");
4241
4389
 
4242
4390
  // src/schemas/draft.ts
4243
- var import_zod_openapi45 = require("@hono/zod-openapi");
4244
- var CreateDraftRequestSchema = import_zod_openapi45.z.object({
4245
- path: import_zod_openapi45.z.string().min(1),
4246
- initialBody: import_zod_openapi45.z.string().optional()
4391
+ var import_zod_openapi47 = require("@hono/zod-openapi");
4392
+ var CreateDraftRequestSchema = import_zod_openapi47.z.object({
4393
+ path: import_zod_openapi47.z.string().min(1),
4394
+ initialBody: import_zod_openapi47.z.string().optional()
4247
4395
  });
4248
- var CreateDraftResponseSchema = import_zod_openapi45.z.object({
4249
- pageId: import_zod_openapi45.z.string()
4396
+ var CreateDraftResponseSchema = import_zod_openapi47.z.object({
4397
+ pageId: import_zod_openapi47.z.string()
4250
4398
  });
4251
- var DraftConflictOwnerSchema = import_zod_openapi45.z.object({
4252
- id: import_zod_openapi45.z.string(),
4253
- username: import_zod_openapi45.z.string(),
4254
- displayName: import_zod_openapi45.z.string()
4399
+ var DraftConflictOwnerSchema = import_zod_openapi47.z.object({
4400
+ id: import_zod_openapi47.z.string(),
4401
+ username: import_zod_openapi47.z.string(),
4402
+ displayName: import_zod_openapi47.z.string()
4255
4403
  });
4256
- var DraftPathConflictErrorSchema = import_zod_openapi45.z.object({
4257
- error: import_zod_openapi45.z.literal("path_taken_by_draft"),
4404
+ var DraftPathConflictErrorSchema = import_zod_openapi47.z.object({
4405
+ error: import_zod_openapi47.z.literal("path_taken_by_draft"),
4258
4406
  owner: DraftConflictOwnerSchema,
4259
- message: import_zod_openapi45.z.string()
4407
+ message: import_zod_openapi47.z.string()
4260
4408
  });
4261
- var DraftBadRequestErrorSchema = import_zod_openapi45.z.object({
4262
- error: import_zod_openapi45.z.enum(["invalid_path", "path_taken"]),
4263
- message: import_zod_openapi45.z.string()
4409
+ var DraftBadRequestErrorSchema = import_zod_openapi47.z.object({
4410
+ error: import_zod_openapi47.z.enum(["invalid_path", "path_taken"]),
4411
+ message: import_zod_openapi47.z.string()
4264
4412
  });
4265
- var DraftNotFoundErrorSchema = import_zod_openapi45.z.object({
4266
- error: import_zod_openapi45.z.literal("draft_not_found"),
4267
- message: import_zod_openapi45.z.string()
4413
+ var DraftNotFoundErrorSchema = import_zod_openapi47.z.object({
4414
+ error: import_zod_openapi47.z.literal("draft_not_found"),
4415
+ message: import_zod_openapi47.z.string()
4268
4416
  });
4269
- var DraftSummarySchema = import_zod_openapi45.z.object({
4270
- pageId: import_zod_openapi45.z.string(),
4271
- path: import_zod_openapi45.z.string(),
4272
- createdAt: import_zod_openapi45.z.string(),
4273
- updatedAt: import_zod_openapi45.z.string()
4417
+ var DraftSummarySchema = import_zod_openapi47.z.object({
4418
+ pageId: import_zod_openapi47.z.string(),
4419
+ path: import_zod_openapi47.z.string(),
4420
+ createdAt: import_zod_openapi47.z.string(),
4421
+ updatedAt: import_zod_openapi47.z.string()
4274
4422
  });
4275
- var ListDraftsResponseSchema = import_zod_openapi45.z.object({
4276
- drafts: import_zod_openapi45.z.array(DraftSummarySchema)
4423
+ var ListDraftsResponseSchema = import_zod_openapi47.z.object({
4424
+ drafts: import_zod_openapi47.z.array(DraftSummarySchema)
4277
4425
  });
4278
4426
 
4279
4427
  // src/contracts/draft.ts
4280
- var DraftIdPathParamsSchema = import_zod_openapi46.z.object({
4281
- id: import_zod_openapi46.z.string().openapi({ description: "Draft page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
4428
+ var DraftIdPathParamsSchema = import_zod_openapi48.z.object({
4429
+ id: import_zod_openapi48.z.string().openapi({ description: "Draft page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
4282
4430
  });
4283
- var createDraftRoute = (0, import_zod_openapi46.createRoute)({
4431
+ var createDraftRoute = (0, import_zod_openapi48.createRoute)({
4284
4432
  method: "post",
4285
4433
  path: "/pages/drafts",
4286
4434
  tags: ["draft"],
@@ -4310,7 +4458,7 @@ var createDraftRoute = (0, import_zod_openapi46.createRoute)({
4310
4458
  }
4311
4459
  }
4312
4460
  });
4313
- var listDraftsRoute = (0, import_zod_openapi46.createRoute)({
4461
+ var listDraftsRoute = (0, import_zod_openapi48.createRoute)({
4314
4462
  method: "get",
4315
4463
  path: "/pages/drafts",
4316
4464
  tags: ["draft"],
@@ -4327,7 +4475,7 @@ var listDraftsRoute = (0, import_zod_openapi46.createRoute)({
4327
4475
  }
4328
4476
  }
4329
4477
  });
4330
- var cancelDraftRoute = (0, import_zod_openapi46.createRoute)({
4478
+ var cancelDraftRoute = (0, import_zod_openapi48.createRoute)({
4331
4479
  method: "delete",
4332
4480
  path: "/pages/drafts/{id}",
4333
4481
  tags: ["draft"],
@@ -4358,42 +4506,8 @@ var draftRoutes = {
4358
4506
  };
4359
4507
 
4360
4508
  // src/contracts/autocomplete.ts
4361
- var import_zod_openapi48 = require("@hono/zod-openapi");
4362
-
4363
- // src/schemas/autocomplete.ts
4364
- var import_zod_openapi47 = require("@hono/zod-openapi");
4365
- var AutocompleteRequestSchema = import_zod_openapi47.z.object({
4366
- q: import_zod_openapi47.z.string().min(1).max(128),
4367
- limit: import_zod_openapi47.z.coerce.number().int().min(1).max(25).optional().default(10),
4368
- /**
4369
- * How `q` is matched against the candidate text. `'substring'` (the
4370
- * default, used by the editor's `@mention` / `[[wikilink]]` pickers)
4371
- * keeps the historical anywhere-in-string match. `'prefix'` anchors
4372
- * the match at the start — used by the "create page" modal, where the
4373
- * user is building a `/`-rooted path and only true prefixes are valid
4374
- * completions of what they have typed so far.
4375
- */
4376
- anchor: import_zod_openapi47.z.enum(["substring", "prefix"]).optional().default("substring")
4377
- });
4378
- var AutocompleteResultSchema = import_zod_openapi47.z.object({
4379
- id: import_zod_openapi47.z.string(),
4380
- label: import_zod_openapi47.z.string(),
4381
- display: import_zod_openapi47.z.string(),
4382
- avatar: import_zod_openapi47.z.string().nullable().optional(),
4383
- modifiedAt: import_zod_openapi47.z.string().nullable().optional(),
4384
- score: import_zod_openapi47.z.number()
4385
- });
4386
- var AutocompleteResponseSchema = import_zod_openapi47.z.object({
4387
- results: import_zod_openapi47.z.array(AutocompleteResultSchema)
4388
- });
4389
- var AutocompleteRateLimitErrorSchema = import_zod_openapi47.z.object({
4390
- error: import_zod_openapi47.z.literal("rate_limited"),
4391
- message: import_zod_openapi47.z.string(),
4392
- retryAfterSeconds: import_zod_openapi47.z.number()
4393
- });
4394
-
4395
- // src/contracts/autocomplete.ts
4396
- var autocompleteUsersRoute = (0, import_zod_openapi48.createRoute)({
4509
+ var import_zod_openapi49 = require("@hono/zod-openapi");
4510
+ var autocompleteUsersRoute = (0, import_zod_openapi49.createRoute)({
4397
4511
  method: "get",
4398
4512
  path: "/users/autocomplete",
4399
4513
  tags: ["autocomplete"],
@@ -4421,7 +4535,7 @@ var autocompleteUsersRoute = (0, import_zod_openapi48.createRoute)({
4421
4535
  }
4422
4536
  }
4423
4537
  });
4424
- var autocompletePagesRoute = (0, import_zod_openapi48.createRoute)({
4538
+ var autocompletePagesRoute = (0, import_zod_openapi49.createRoute)({
4425
4539
  method: "get",
4426
4540
  path: "/pages/autocomplete",
4427
4541
  tags: ["autocomplete"],
@@ -4455,50 +4569,50 @@ var autocompleteRoutes = {
4455
4569
  };
4456
4570
 
4457
4571
  // src/contracts/attachment.ts
4458
- var import_zod_openapi50 = require("@hono/zod-openapi");
4572
+ var import_zod_openapi51 = require("@hono/zod-openapi");
4459
4573
 
4460
4574
  // src/schemas/attachment.ts
4461
- var import_zod_openapi49 = require("@hono/zod-openapi");
4462
- var AttachmentSchema = import_zod_openapi49.z.object({
4463
- _id: import_zod_openapi49.z.string(),
4464
- page: import_zod_openapi49.z.string(),
4575
+ var import_zod_openapi50 = require("@hono/zod-openapi");
4576
+ var AttachmentSchema = import_zod_openapi50.z.object({
4577
+ _id: import_zod_openapi50.z.string(),
4578
+ page: import_zod_openapi50.z.string(),
4465
4579
  creator: UserPublicSchema,
4466
- filePath: import_zod_openapi49.z.string(),
4467
- fileName: import_zod_openapi49.z.string(),
4468
- originalName: import_zod_openapi49.z.string(),
4469
- fileFormat: import_zod_openapi49.z.string(),
4470
- fileSize: import_zod_openapi49.z.number(),
4471
- createdAt: import_zod_openapi49.z.string(),
4472
- url: import_zod_openapi49.z.string(),
4473
- inUse: import_zod_openapi49.z.boolean()
4580
+ filePath: import_zod_openapi50.z.string(),
4581
+ fileName: import_zod_openapi50.z.string(),
4582
+ originalName: import_zod_openapi50.z.string(),
4583
+ fileFormat: import_zod_openapi50.z.string(),
4584
+ fileSize: import_zod_openapi50.z.number(),
4585
+ createdAt: import_zod_openapi50.z.string(),
4586
+ url: import_zod_openapi50.z.string(),
4587
+ inUse: import_zod_openapi50.z.boolean()
4474
4588
  });
4475
4589
  var AttachmentMetaSchema = AttachmentSchema.omit({ inUse: true });
4476
- var ListAttachmentsResponseSchema = import_zod_openapi49.z.object({
4477
- attachments: import_zod_openapi49.z.array(AttachmentSchema)
4590
+ var ListAttachmentsResponseSchema = import_zod_openapi50.z.object({
4591
+ attachments: import_zod_openapi50.z.array(AttachmentSchema)
4478
4592
  });
4479
- var PastAttachmentUsageSchema = import_zod_openapi49.z.object({
4593
+ var PastAttachmentUsageSchema = import_zod_openapi50.z.object({
4480
4594
  attachment: AttachmentSchema,
4481
- referencingRevisions: import_zod_openapi49.z.array(
4482
- import_zod_openapi49.z.object({
4483
- revisionId: import_zod_openapi49.z.string(),
4484
- createdAt: import_zod_openapi49.z.string(),
4595
+ referencingRevisions: import_zod_openapi50.z.array(
4596
+ import_zod_openapi50.z.object({
4597
+ revisionId: import_zod_openapi50.z.string(),
4598
+ createdAt: import_zod_openapi50.z.string(),
4485
4599
  author: UserPublicSchema
4486
4600
  })
4487
4601
  )
4488
4602
  });
4489
- var AttachmentUsageResponseSchema = import_zod_openapi49.z.object({
4490
- pagePath: import_zod_openapi49.z.string(),
4491
- latest: import_zod_openapi49.z.array(AttachmentSchema),
4492
- past: import_zod_openapi49.z.array(PastAttachmentUsageSchema)
4603
+ var AttachmentUsageResponseSchema = import_zod_openapi50.z.object({
4604
+ pagePath: import_zod_openapi50.z.string(),
4605
+ latest: import_zod_openapi50.z.array(AttachmentSchema),
4606
+ past: import_zod_openapi50.z.array(PastAttachmentUsageSchema)
4493
4607
  });
4494
- var AddAttachmentResponseSchema = import_zod_openapi49.z.object({
4608
+ var AddAttachmentResponseSchema = import_zod_openapi50.z.object({
4495
4609
  attachment: AttachmentSchema,
4496
- url: import_zod_openapi49.z.string()
4610
+ url: import_zod_openapi50.z.string()
4497
4611
  });
4498
- var RemoveAttachmentResponseSchema = import_zod_openapi49.z.object({
4499
- success: import_zod_openapi49.z.literal(true)
4612
+ var RemoveAttachmentResponseSchema = import_zod_openapi50.z.object({
4613
+ success: import_zod_openapi50.z.literal(true)
4500
4614
  });
4501
- var AttachmentErrorCodeSchema = import_zod_openapi49.z.enum([
4615
+ var AttachmentErrorCodeSchema = import_zod_openapi50.z.enum([
4502
4616
  "INVALID_PAGE_ID",
4503
4617
  "PAGE_NOT_FOUND",
4504
4618
  "FILE_MISSING",
@@ -4510,43 +4624,43 @@ var AttachmentErrorCodeSchema = import_zod_openapi49.z.enum([
4510
4624
  "UPLOAD_FAILED",
4511
4625
  "REMOVE_FAILED"
4512
4626
  ]);
4513
- var AttachmentErrorSchema = import_zod_openapi49.z.object({
4514
- error: import_zod_openapi49.z.object({
4627
+ var AttachmentErrorSchema = import_zod_openapi50.z.object({
4628
+ error: import_zod_openapi50.z.object({
4515
4629
  code: AttachmentErrorCodeSchema,
4516
- message: import_zod_openapi49.z.string()
4630
+ message: import_zod_openapi50.z.string()
4517
4631
  })
4518
4632
  });
4519
- var UploadAttachmentResponseSchema = import_zod_openapi49.z.object({
4520
- url: import_zod_openapi49.z.string(),
4521
- filename: import_zod_openapi49.z.string(),
4522
- mimeType: import_zod_openapi49.z.string(),
4523
- sizeBytes: import_zod_openapi49.z.number()
4633
+ var UploadAttachmentResponseSchema = import_zod_openapi50.z.object({
4634
+ url: import_zod_openapi50.z.string(),
4635
+ filename: import_zod_openapi50.z.string(),
4636
+ mimeType: import_zod_openapi50.z.string(),
4637
+ sizeBytes: import_zod_openapi50.z.number()
4524
4638
  });
4525
- var UploadAttachmentErrorCodeSchema = import_zod_openapi49.z.enum(["too_large", "disallowed_type", "rate_limited", "no_permission"]);
4526
- var UploadAttachmentErrorSchema = import_zod_openapi49.z.object({
4639
+ var UploadAttachmentErrorCodeSchema = import_zod_openapi50.z.enum(["too_large", "disallowed_type", "rate_limited", "no_permission"]);
4640
+ var UploadAttachmentErrorSchema = import_zod_openapi50.z.object({
4527
4641
  error: UploadAttachmentErrorCodeSchema,
4528
- message: import_zod_openapi49.z.string(),
4529
- details: import_zod_openapi49.z.record(import_zod_openapi49.z.string(), import_zod_openapi49.z.unknown()).optional()
4642
+ message: import_zod_openapi50.z.string(),
4643
+ details: import_zod_openapi50.z.record(import_zod_openapi50.z.string(), import_zod_openapi50.z.unknown()).optional()
4530
4644
  });
4531
4645
  var IMAGE_UPLOAD_MIME = ["image/png", "image/jpeg", "image/gif", "image/webp", "image/svg+xml"];
4532
4646
  var DND_EXTRA_UPLOAD_MIME = ["application/pdf", "text/plain", "text/markdown", "text/csv", "application/zip"];
4533
4647
 
4534
4648
  // src/contracts/attachment.ts
4535
- var PageIdPathParamsSchema3 = import_zod_openapi50.z.object({
4536
- pageId: import_zod_openapi50.z.string().openapi({ description: "Page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
4649
+ var PageIdPathParamsSchema3 = import_zod_openapi51.z.object({
4650
+ pageId: import_zod_openapi51.z.string().openapi({ description: "Page id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
4537
4651
  });
4538
- var AttachmentIdPathParamsSchema = import_zod_openapi50.z.object({
4539
- id: import_zod_openapi50.z.string().openapi({ description: "Attachment id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
4652
+ var AttachmentIdPathParamsSchema = import_zod_openapi51.z.object({
4653
+ id: import_zod_openapi51.z.string().openapi({ description: "Attachment id (24-char hex ObjectId)", example: "507f1f77bcf86cd799439011" })
4540
4654
  });
4541
- var AddAttachmentBodySchema = import_zod_openapi50.z.object({
4542
- file: import_zod_openapi50.z.any().openapi({ type: "string", format: "binary" }).optional()
4655
+ var AddAttachmentBodySchema = import_zod_openapi51.z.object({
4656
+ file: import_zod_openapi51.z.any().openapi({ type: "string", format: "binary" }).optional()
4543
4657
  });
4544
- var UploadAttachmentBodySchema = import_zod_openapi50.z.object({
4545
- file: import_zod_openapi50.z.any().openapi({ type: "string", format: "binary" }).optional(),
4546
- pageId: import_zod_openapi50.z.string().optional(),
4547
- intent: import_zod_openapi50.z.string().optional().openapi({ enum: ["paste", "dnd"] })
4658
+ var UploadAttachmentBodySchema = import_zod_openapi51.z.object({
4659
+ file: import_zod_openapi51.z.any().openapi({ type: "string", format: "binary" }).optional(),
4660
+ pageId: import_zod_openapi51.z.string().optional(),
4661
+ intent: import_zod_openapi51.z.string().optional().openapi({ enum: ["paste", "dnd"] })
4548
4662
  });
4549
- var listAttachmentsRoute = (0, import_zod_openapi50.createRoute)({
4663
+ var listAttachmentsRoute = (0, import_zod_openapi51.createRoute)({
4550
4664
  method: "get",
4551
4665
  path: "/pages/{pageId}/attachments",
4552
4666
  tags: ["attachment"],
@@ -4578,7 +4692,7 @@ var listAttachmentsRoute = (0, import_zod_openapi50.createRoute)({
4578
4692
  }
4579
4693
  }
4580
4694
  });
4581
- var addAttachmentRoute = (0, import_zod_openapi50.createRoute)({
4695
+ var addAttachmentRoute = (0, import_zod_openapi51.createRoute)({
4582
4696
  method: "post",
4583
4697
  path: "/pages/{pageId}/attachments",
4584
4698
  tags: ["attachment"],
@@ -4617,7 +4731,7 @@ var addAttachmentRoute = (0, import_zod_openapi50.createRoute)({
4617
4731
  }
4618
4732
  }
4619
4733
  });
4620
- var getAttachmentUsageRoute = (0, import_zod_openapi50.createRoute)({
4734
+ var getAttachmentUsageRoute = (0, import_zod_openapi51.createRoute)({
4621
4735
  method: "get",
4622
4736
  path: "/pages/{pageId}/attachments/usage",
4623
4737
  tags: ["attachment"],
@@ -4649,7 +4763,7 @@ var getAttachmentUsageRoute = (0, import_zod_openapi50.createRoute)({
4649
4763
  }
4650
4764
  }
4651
4765
  });
4652
- var getAttachmentMetaRoute = (0, import_zod_openapi50.createRoute)({
4766
+ var getAttachmentMetaRoute = (0, import_zod_openapi51.createRoute)({
4653
4767
  method: "get",
4654
4768
  path: "/attachments/{id}/meta",
4655
4769
  tags: ["attachment"],
@@ -4681,7 +4795,7 @@ var getAttachmentMetaRoute = (0, import_zod_openapi50.createRoute)({
4681
4795
  }
4682
4796
  }
4683
4797
  });
4684
- var uploadAttachmentRoute = (0, import_zod_openapi50.createRoute)({
4798
+ var uploadAttachmentRoute = (0, import_zod_openapi51.createRoute)({
4685
4799
  method: "post",
4686
4800
  path: "/attachments/upload",
4687
4801
  tags: ["attachment"],
@@ -4727,7 +4841,7 @@ var uploadAttachmentRoute = (0, import_zod_openapi50.createRoute)({
4727
4841
  }
4728
4842
  }
4729
4843
  });
4730
- var removeAttachmentRoute = (0, import_zod_openapi50.createRoute)({
4844
+ var removeAttachmentRoute = (0, import_zod_openapi51.createRoute)({
4731
4845
  method: "delete",
4732
4846
  path: "/attachments/{id}",
4733
4847
  tags: ["attachment"],
@@ -4778,37 +4892,37 @@ var attachmentRoutes = {
4778
4892
  };
4779
4893
 
4780
4894
  // src/contracts/search.ts
4781
- var import_zod_openapi52 = require("@hono/zod-openapi");
4895
+ var import_zod_openapi53 = require("@hono/zod-openapi");
4782
4896
 
4783
4897
  // src/schemas/search.ts
4784
- var import_zod_openapi51 = require("@hono/zod-openapi");
4785
- var SearchPageTypeSchema = import_zod_openapi51.z.enum(["portal", "public", "user"]);
4786
- var SearchPagesRequestSchema = import_zod_openapi51.z.object({
4787
- q: import_zod_openapi51.z.string().min(1),
4788
- tree: import_zod_openapi51.z.string().optional(),
4898
+ var import_zod_openapi52 = require("@hono/zod-openapi");
4899
+ var SearchPageTypeSchema = import_zod_openapi52.z.enum(["portal", "public", "user"]);
4900
+ var SearchPagesRequestSchema = import_zod_openapi52.z.object({
4901
+ q: import_zod_openapi52.z.string().min(1),
4902
+ tree: import_zod_openapi52.z.string().optional(),
4789
4903
  type: SearchPageTypeSchema.optional(),
4790
- page: import_zod_openapi51.z.coerce.number().int().min(1).default(1),
4791
- limit: import_zod_openapi51.z.coerce.number().int().min(1).max(100).default(50)
4792
- });
4793
- var SearchHitSchema = import_zod_openapi51.z.object({
4794
- pageId: import_zod_openapi51.z.string(),
4795
- path: import_zod_openapi51.z.string(),
4796
- score: import_zod_openapi51.z.number().optional(),
4797
- snippet: import_zod_openapi51.z.string().optional(),
4798
- bookmarkCount: import_zod_openapi51.z.number(),
4904
+ page: import_zod_openapi52.z.coerce.number().int().min(1).default(1),
4905
+ limit: import_zod_openapi52.z.coerce.number().int().min(1).max(100).default(50)
4906
+ });
4907
+ var SearchHitSchema = import_zod_openapi52.z.object({
4908
+ pageId: import_zod_openapi52.z.string(),
4909
+ path: import_zod_openapi52.z.string(),
4910
+ score: import_zod_openapi52.z.number().optional(),
4911
+ snippet: import_zod_openapi52.z.string().optional(),
4912
+ bookmarkCount: import_zod_openapi52.z.number(),
4799
4913
  page: PageSchema
4800
4914
  });
4801
- var SearchPagesResponseSchema = import_zod_openapi51.z.object({
4802
- meta: import_zod_openapi51.z.object({
4803
- took: import_zod_openapi51.z.number().optional(),
4804
- total: import_zod_openapi51.z.number(),
4805
- results: import_zod_openapi51.z.number()
4915
+ var SearchPagesResponseSchema = import_zod_openapi52.z.object({
4916
+ meta: import_zod_openapi52.z.object({
4917
+ took: import_zod_openapi52.z.number().optional(),
4918
+ total: import_zod_openapi52.z.number(),
4919
+ results: import_zod_openapi52.z.number()
4806
4920
  }),
4807
- data: import_zod_openapi51.z.array(SearchHitSchema)
4921
+ data: import_zod_openapi52.z.array(SearchHitSchema)
4808
4922
  });
4809
4923
 
4810
4924
  // src/contracts/search.ts
4811
- var searchPagesRoute = (0, import_zod_openapi52.createRoute)({
4925
+ var searchPagesRoute = (0, import_zod_openapi53.createRoute)({
4812
4926
  method: "get",
4813
4927
  path: "/search",
4814
4928
  tags: ["search"],
@@ -4845,39 +4959,39 @@ var searchRoutes = {
4845
4959
  };
4846
4960
 
4847
4961
  // src/contracts/adminCrypto.ts
4848
- var import_zod_openapi54 = require("@hono/zod-openapi");
4962
+ var import_zod_openapi55 = require("@hono/zod-openapi");
4849
4963
 
4850
4964
  // src/schemas/adminCrypto.ts
4851
- var import_zod_openapi53 = require("@hono/zod-openapi");
4852
- var SensitiveConfigEntrySchema = import_zod_openapi53.z.object({
4853
- ns: import_zod_openapi53.z.string(),
4854
- key: import_zod_openapi53.z.string(),
4855
- present: import_zod_openapi53.z.boolean(),
4856
- encrypted: import_zod_openapi53.z.boolean()
4965
+ var import_zod_openapi54 = require("@hono/zod-openapi");
4966
+ var SensitiveConfigEntrySchema = import_zod_openapi54.z.object({
4967
+ ns: import_zod_openapi54.z.string(),
4968
+ key: import_zod_openapi54.z.string(),
4969
+ present: import_zod_openapi54.z.boolean(),
4970
+ encrypted: import_zod_openapi54.z.boolean()
4857
4971
  });
4858
- var CryptoStatusResponseSchema = import_zod_openapi53.z.object({
4972
+ var CryptoStatusResponseSchema = import_zod_openapi54.z.object({
4859
4973
  /** False when CROWI_ENCRYPTION_KEY is not configured — UI shows a setup hint. */
4860
- encryptionConfigured: import_zod_openapi53.z.boolean(),
4861
- unencryptedCount: import_zod_openapi53.z.number().int().min(0),
4862
- encryptedCount: import_zod_openapi53.z.number().int().min(0),
4863
- entries: import_zod_openapi53.z.array(SensitiveConfigEntrySchema)
4974
+ encryptionConfigured: import_zod_openapi54.z.boolean(),
4975
+ unencryptedCount: import_zod_openapi54.z.number().int().min(0),
4976
+ encryptedCount: import_zod_openapi54.z.number().int().min(0),
4977
+ entries: import_zod_openapi54.z.array(SensitiveConfigEntrySchema)
4864
4978
  });
4865
- var ReencryptResponseSchema = import_zod_openapi53.z.object({
4866
- rewritten: import_zod_openapi53.z.number().int().min(0),
4979
+ var ReencryptResponseSchema = import_zod_openapi54.z.object({
4980
+ rewritten: import_zod_openapi54.z.number().int().min(0),
4867
4981
  /** Already encrypted, skipped on this run. */
4868
- alreadyEncrypted: import_zod_openapi53.z.number().int().min(0),
4982
+ alreadyEncrypted: import_zod_openapi54.z.number().int().min(0),
4869
4983
  /** Sensitive registry entries that had no row in the DB at all. */
4870
- missing: import_zod_openapi53.z.number().int().min(0)
4984
+ missing: import_zod_openapi54.z.number().int().min(0)
4871
4985
  });
4872
- var EncryptionNotConfiguredErrorSchema = import_zod_openapi53.z.object({
4873
- error: import_zod_openapi53.z.object({
4874
- code: import_zod_openapi53.z.literal("ENCRYPTION_NOT_CONFIGURED"),
4875
- message: import_zod_openapi53.z.string()
4986
+ var EncryptionNotConfiguredErrorSchema = import_zod_openapi54.z.object({
4987
+ error: import_zod_openapi54.z.object({
4988
+ code: import_zod_openapi54.z.literal("ENCRYPTION_NOT_CONFIGURED"),
4989
+ message: import_zod_openapi54.z.string()
4876
4990
  })
4877
4991
  });
4878
4992
 
4879
4993
  // src/contracts/adminCrypto.ts
4880
- var getCryptoStatusRoute = (0, import_zod_openapi54.createRoute)({
4994
+ var getCryptoStatusRoute = (0, import_zod_openapi55.createRoute)({
4881
4995
  method: "get",
4882
4996
  path: "/admin/crypto/status",
4883
4997
  tags: ["adminCrypto"],
@@ -4902,7 +5016,7 @@ var getCryptoStatusRoute = (0, import_zod_openapi54.createRoute)({
4902
5016
  }
4903
5017
  }
4904
5018
  });
4905
- var reencryptAllRoute = (0, import_zod_openapi54.createRoute)({
5019
+ var reencryptAllRoute = (0, import_zod_openapi55.createRoute)({
4906
5020
  method: "post",
4907
5021
  path: "/admin/crypto/reencrypt",
4908
5022
  tags: ["adminCrypto"],
@@ -4937,56 +5051,56 @@ var adminCryptoRoutes = {
4937
5051
  };
4938
5052
 
4939
5053
  // src/contracts/admin/app.ts
4940
- var import_zod_openapi56 = require("@hono/zod-openapi");
5054
+ var import_zod_openapi57 = require("@hono/zod-openapi");
4941
5055
 
4942
5056
  // src/schemas/admin/app.ts
4943
- var import_zod_openapi55 = require("@hono/zod-openapi");
4944
- var GetAppSettingsResponseSchema = import_zod_openapi55.z.object({
4945
- app: import_zod_openapi55.z.object({
4946
- title: import_zod_openapi55.z.string(),
4947
- confidential: import_zod_openapi55.z.string()
5057
+ var import_zod_openapi56 = require("@hono/zod-openapi");
5058
+ var GetAppSettingsResponseSchema = import_zod_openapi56.z.object({
5059
+ app: import_zod_openapi56.z.object({
5060
+ title: import_zod_openapi56.z.string(),
5061
+ confidential: import_zod_openapi56.z.string()
4948
5062
  }),
4949
5063
  /**
4950
5064
  * Whether a storage driver is registered (i.e. uploads are wired up).
4951
5065
  * Sourced from `Config.isUploadable()` which now consults PluginManager.
4952
5066
  */
4953
- isUploadable: import_zod_openapi55.z.boolean(),
5067
+ isUploadable: import_zod_openapi56.z.boolean(),
4954
5068
  /**
4955
5069
  * The Open / Restricted / Closed → open / restricted / closed mapping the
4956
5070
  * legacy admin controller exposed. Useful for the UI to render the current
4957
5071
  * registration mode label without knowing the internal capitalisation.
4958
5072
  */
4959
- registrationMode: import_zod_openapi55.z.record(import_zod_openapi55.z.string(), import_zod_openapi55.z.string()),
5073
+ registrationMode: import_zod_openapi56.z.record(import_zod_openapi56.z.string(), import_zod_openapi56.z.string()),
4960
5074
  /**
4961
5075
  * Whether the admin has dismissed the initial-setup checklist on the
4962
5076
  * dashboard. Persisted server-side (`app:setupChecklistDismissed`) so the
4963
5077
  * dismissal holds across browsers and devices, not just one localStorage.
4964
5078
  */
4965
- setupChecklistDismissed: import_zod_openapi55.z.boolean()
5079
+ setupChecklistDismissed: import_zod_openapi56.z.boolean()
4966
5080
  });
4967
- var UpdateAppSettingsRequestSchema = import_zod_openapi55.z.object({
4968
- app: import_zod_openapi55.z.object({
4969
- title: import_zod_openapi55.z.string().trim().min(1).max(100).optional(),
4970
- confidential: import_zod_openapi55.z.string().max(500).optional()
5081
+ var UpdateAppSettingsRequestSchema = import_zod_openapi56.z.object({
5082
+ app: import_zod_openapi56.z.object({
5083
+ title: import_zod_openapi56.z.string().trim().min(1).max(100).optional(),
5084
+ confidential: import_zod_openapi56.z.string().max(500).optional()
4971
5085
  }).optional(),
4972
5086
  /**
4973
5087
  * Toggle the dashboard initial-setup checklist's dismissed state. Sent on
4974
5088
  * its own (without the `app` block) when the admin clicks "mark as done".
4975
5089
  */
4976
- setupChecklistDismissed: import_zod_openapi55.z.boolean().optional()
5090
+ setupChecklistDismissed: import_zod_openapi56.z.boolean().optional()
4977
5091
  }).strict();
4978
- var UpdateAppSettingsResponseSchema = import_zod_openapi55.z.object({
4979
- ok: import_zod_openapi55.z.literal(true)
4980
- });
4981
- var AppSettingsValidationErrorSchema = import_zod_openapi55.z.object({
4982
- bodyResult: import_zod_openapi55.z.object({
4983
- issues: import_zod_openapi55.z.array(
4984
- import_zod_openapi55.z.object({
4985
- path: import_zod_openapi55.z.array(import_zod_openapi55.z.union([import_zod_openapi55.z.string(), import_zod_openapi55.z.number()])),
4986
- message: import_zod_openapi55.z.string()
5092
+ var UpdateAppSettingsResponseSchema = import_zod_openapi56.z.object({
5093
+ ok: import_zod_openapi56.z.literal(true)
5094
+ });
5095
+ var AppSettingsValidationErrorSchema = import_zod_openapi56.z.object({
5096
+ bodyResult: import_zod_openapi56.z.object({
5097
+ issues: import_zod_openapi56.z.array(
5098
+ import_zod_openapi56.z.object({
5099
+ path: import_zod_openapi56.z.array(import_zod_openapi56.z.union([import_zod_openapi56.z.string(), import_zod_openapi56.z.number()])),
5100
+ message: import_zod_openapi56.z.string()
4987
5101
  })
4988
5102
  ),
4989
- name: import_zod_openapi55.z.string().optional()
5103
+ name: import_zod_openapi56.z.string().optional()
4990
5104
  })
4991
5105
  });
4992
5106
 
@@ -5007,7 +5121,7 @@ var appSettingsValidationHook = (result, c) => {
5007
5121
  400
5008
5122
  );
5009
5123
  };
5010
- var getAppSettingsRoute = (0, import_zod_openapi56.createRoute)({
5124
+ var getAppSettingsRoute = (0, import_zod_openapi57.createRoute)({
5011
5125
  method: "get",
5012
5126
  path: "/admin/app",
5013
5127
  tags: ["admin.app"],
@@ -5028,7 +5142,7 @@ var getAppSettingsRoute = (0, import_zod_openapi56.createRoute)({
5028
5142
  }
5029
5143
  }
5030
5144
  });
5031
- var updateAppSettingsRoute = (0, import_zod_openapi56.createRoute)({
5145
+ var updateAppSettingsRoute = (0, import_zod_openapi57.createRoute)({
5032
5146
  method: "put",
5033
5147
  path: "/admin/app",
5034
5148
  tags: ["admin.app"],
@@ -5065,26 +5179,26 @@ var adminAppRoutes = {
5065
5179
  };
5066
5180
 
5067
5181
  // src/contracts/admin/auth.ts
5068
- var import_zod_openapi58 = require("@hono/zod-openapi");
5182
+ var import_zod_openapi59 = require("@hono/zod-openapi");
5069
5183
 
5070
5184
  // src/schemas/admin/auth.ts
5071
- var import_zod_openapi57 = require("@hono/zod-openapi");
5072
- var AuthSettingsSchema = import_zod_openapi57.z.object({
5073
- requireThirdPartyAuth: import_zod_openapi57.z.boolean(),
5074
- disablePasswordAuth: import_zod_openapi57.z.boolean()
5185
+ var import_zod_openapi58 = require("@hono/zod-openapi");
5186
+ var AuthSettingsSchema = import_zod_openapi58.z.object({
5187
+ requireThirdPartyAuth: import_zod_openapi58.z.boolean(),
5188
+ disablePasswordAuth: import_zod_openapi58.z.boolean()
5075
5189
  });
5076
5190
  var UpdateAuthSettingsRequestSchema = AuthSettingsSchema;
5077
5191
  var GetAuthSettingsResponseSchema = AuthSettingsSchema;
5078
5192
  var UpdateAuthSettingsResponseSchema = AuthSettingsSchema;
5079
- var ThirdPartyAuthUnavailableErrorSchema = import_zod_openapi57.z.object({
5080
- error: import_zod_openapi57.z.object({
5081
- code: import_zod_openapi57.z.literal("THIRD_PARTY_AUTH_UNAVAILABLE"),
5082
- message: import_zod_openapi57.z.string()
5193
+ var ThirdPartyAuthUnavailableErrorSchema = import_zod_openapi58.z.object({
5194
+ error: import_zod_openapi58.z.object({
5195
+ code: import_zod_openapi58.z.literal("THIRD_PARTY_AUTH_UNAVAILABLE"),
5196
+ message: import_zod_openapi58.z.string()
5083
5197
  })
5084
5198
  });
5085
5199
 
5086
5200
  // src/contracts/admin/auth.ts
5087
- var getAuthSettingsRoute = (0, import_zod_openapi58.createRoute)({
5201
+ var getAuthSettingsRoute = (0, import_zod_openapi59.createRoute)({
5088
5202
  method: "get",
5089
5203
  path: "/admin/auth",
5090
5204
  tags: ["admin.auth"],
@@ -5109,7 +5223,7 @@ var getAuthSettingsRoute = (0, import_zod_openapi58.createRoute)({
5109
5223
  }
5110
5224
  }
5111
5225
  });
5112
- var updateAuthSettingsRoute = (0, import_zod_openapi58.createRoute)({
5226
+ var updateAuthSettingsRoute = (0, import_zod_openapi59.createRoute)({
5113
5227
  method: "put",
5114
5228
  path: "/admin/auth",
5115
5229
  tags: ["admin.auth"],
@@ -5149,44 +5263,44 @@ var adminAuthRoutes = {
5149
5263
  };
5150
5264
 
5151
5265
  // src/contracts/admin/mail.ts
5152
- var import_zod_openapi60 = require("@hono/zod-openapi");
5266
+ var import_zod_openapi61 = require("@hono/zod-openapi");
5153
5267
 
5154
5268
  // src/schemas/admin/mail.ts
5155
- var import_zod_openapi59 = require("@hono/zod-openapi");
5156
- var GetMailSettingsResponseSchema = import_zod_openapi59.z.object({
5157
- from: import_zod_openapi59.z.string(),
5158
- activeDriver: import_zod_openapi59.z.string(),
5269
+ var import_zod_openapi60 = require("@hono/zod-openapi");
5270
+ var GetMailSettingsResponseSchema = import_zod_openapi60.z.object({
5271
+ from: import_zod_openapi60.z.string(),
5272
+ activeDriver: import_zod_openapi60.z.string(),
5159
5273
  /** npm name of the plugin that registered the active driver, for
5160
5274
  * linking to its config page. Empty when no sender is active. */
5161
- activePlugin: import_zod_openapi59.z.string()
5275
+ activePlugin: import_zod_openapi60.z.string()
5162
5276
  });
5163
- var UpdateMailSettingsRequestSchema = import_zod_openapi59.z.object({
5164
- from: import_zod_openapi59.z.string().trim().max(254).optional()
5277
+ var UpdateMailSettingsRequestSchema = import_zod_openapi60.z.object({
5278
+ from: import_zod_openapi60.z.string().trim().max(254).optional()
5165
5279
  });
5166
- var UpdateMailSettingsResponseSchema = import_zod_openapi59.z.object({
5167
- ok: import_zod_openapi59.z.literal(true)
5280
+ var UpdateMailSettingsResponseSchema = import_zod_openapi60.z.object({
5281
+ ok: import_zod_openapi60.z.literal(true)
5168
5282
  });
5169
- var SendTestMailRequestSchema = import_zod_openapi59.z.object({}).optional();
5170
- var SendTestMailResponseSchema = import_zod_openapi59.z.object({
5171
- ok: import_zod_openapi59.z.literal(true),
5283
+ var SendTestMailRequestSchema = import_zod_openapi60.z.object({}).optional();
5284
+ var SendTestMailResponseSchema = import_zod_openapi60.z.object({
5285
+ ok: import_zod_openapi60.z.literal(true),
5172
5286
  /** Address the test mail was dispatched to (= the calling admin's email). */
5173
- to: import_zod_openapi59.z.string()
5287
+ to: import_zod_openapi60.z.string()
5174
5288
  });
5175
- var SendTestMailErrorSchema = import_zod_openapi59.z.object({
5176
- error: import_zod_openapi59.z.object({
5177
- code: import_zod_openapi59.z.literal("MAIL_TEST_FAILED"),
5178
- message: import_zod_openapi59.z.string()
5289
+ var SendTestMailErrorSchema = import_zod_openapi60.z.object({
5290
+ error: import_zod_openapi60.z.object({
5291
+ code: import_zod_openapi60.z.literal("MAIL_TEST_FAILED"),
5292
+ message: import_zod_openapi60.z.string()
5179
5293
  })
5180
5294
  });
5181
- var MailSettingsValidationErrorSchema = import_zod_openapi59.z.object({
5182
- bodyResult: import_zod_openapi59.z.object({
5183
- issues: import_zod_openapi59.z.array(
5184
- import_zod_openapi59.z.object({
5185
- path: import_zod_openapi59.z.array(import_zod_openapi59.z.union([import_zod_openapi59.z.string(), import_zod_openapi59.z.number()])),
5186
- message: import_zod_openapi59.z.string()
5295
+ var MailSettingsValidationErrorSchema = import_zod_openapi60.z.object({
5296
+ bodyResult: import_zod_openapi60.z.object({
5297
+ issues: import_zod_openapi60.z.array(
5298
+ import_zod_openapi60.z.object({
5299
+ path: import_zod_openapi60.z.array(import_zod_openapi60.z.union([import_zod_openapi60.z.string(), import_zod_openapi60.z.number()])),
5300
+ message: import_zod_openapi60.z.string()
5187
5301
  })
5188
5302
  ),
5189
- name: import_zod_openapi59.z.string().optional()
5303
+ name: import_zod_openapi60.z.string().optional()
5190
5304
  })
5191
5305
  });
5192
5306
 
@@ -5207,7 +5321,7 @@ var mailSettingsValidationHook = (result, c) => {
5207
5321
  400
5208
5322
  );
5209
5323
  };
5210
- var getMailSettingsRoute = (0, import_zod_openapi60.createRoute)({
5324
+ var getMailSettingsRoute = (0, import_zod_openapi61.createRoute)({
5211
5325
  method: "get",
5212
5326
  path: "/admin/mail",
5213
5327
  tags: ["admin.mail"],
@@ -5228,7 +5342,7 @@ var getMailSettingsRoute = (0, import_zod_openapi60.createRoute)({
5228
5342
  }
5229
5343
  }
5230
5344
  });
5231
- var updateMailSettingsRoute = (0, import_zod_openapi60.createRoute)({
5345
+ var updateMailSettingsRoute = (0, import_zod_openapi61.createRoute)({
5232
5346
  method: "put",
5233
5347
  path: "/admin/mail",
5234
5348
  tags: ["admin.mail"],
@@ -5259,7 +5373,7 @@ var updateMailSettingsRoute = (0, import_zod_openapi60.createRoute)({
5259
5373
  }
5260
5374
  }
5261
5375
  });
5262
- var sendTestMailRoute = (0, import_zod_openapi60.createRoute)({
5376
+ var sendTestMailRoute = (0, import_zod_openapi61.createRoute)({
5263
5377
  method: "post",
5264
5378
  path: "/admin/mail/test",
5265
5379
  tags: ["admin.mail"],
@@ -5301,30 +5415,30 @@ var adminMailRoutes = {
5301
5415
  };
5302
5416
 
5303
5417
  // src/contracts/admin/plugins.ts
5304
- var import_zod_openapi62 = require("@hono/zod-openapi");
5418
+ var import_zod_openapi63 = require("@hono/zod-openapi");
5305
5419
 
5306
5420
  // src/schemas/admin/plugins.ts
5307
- var import_zod_openapi61 = require("@hono/zod-openapi");
5308
- var PluginFieldSchema = import_zod_openapi61.z.object({
5309
- name: import_zod_openapi61.z.string(),
5421
+ var import_zod_openapi62 = require("@hono/zod-openapi");
5422
+ var PluginFieldSchema = import_zod_openapi62.z.object({
5423
+ name: import_zod_openapi62.z.string(),
5310
5424
  /**
5311
5425
  * Localized display label. Falls back to `name` in the form when absent.
5312
5426
  * Filled from the plugin's `configI18n[locale]` overlay by the admin API.
5313
5427
  */
5314
- label: import_zod_openapi61.z.string().optional(),
5315
- kind: import_zod_openapi61.z.enum(["string", "secret", "number", "boolean", "enum", "string-array"]),
5316
- description: import_zod_openapi61.z.string().optional(),
5317
- defaultValue: import_zod_openapi61.z.unknown().optional(),
5318
- options: import_zod_openapi61.z.array(import_zod_openapi61.z.string()).optional(),
5319
- action: import_zod_openapi61.z.object({
5320
- label: import_zod_openapi61.z.string(),
5321
- method: import_zod_openapi61.z.string(),
5322
- path: import_zod_openapi61.z.string()
5428
+ label: import_zod_openapi62.z.string().optional(),
5429
+ kind: import_zod_openapi62.z.enum(["string", "secret", "number", "boolean", "enum", "string-array"]),
5430
+ description: import_zod_openapi62.z.string().optional(),
5431
+ defaultValue: import_zod_openapi62.z.unknown().optional(),
5432
+ options: import_zod_openapi62.z.array(import_zod_openapi62.z.string()).optional(),
5433
+ action: import_zod_openapi62.z.object({
5434
+ label: import_zod_openapi62.z.string(),
5435
+ method: import_zod_openapi62.z.string(),
5436
+ path: import_zod_openapi62.z.string()
5323
5437
  }).optional(),
5324
- optional: import_zod_openapi61.z.boolean()
5438
+ optional: import_zod_openapi62.z.boolean()
5325
5439
  });
5326
- var AdminSidebarSection = import_zod_openapi61.z.enum(["settings", "shared", "storage", "mail", "notification", "auth", "search", "renderer", "platform"]);
5327
- var PluginAdminPlacementSchema = import_zod_openapi61.z.object({
5440
+ var AdminSidebarSection = import_zod_openapi62.z.enum(["settings", "shared", "storage", "mail", "notification", "auth", "search", "renderer", "platform"]);
5441
+ var PluginAdminPlacementSchema = import_zod_openapi62.z.object({
5328
5442
  /**
5329
5443
  * Sidebar section to surface this plugin under. The runtime fills
5330
5444
  * this in — it's either declared by the plugin via `adminPlacement`
@@ -5333,21 +5447,28 @@ var PluginAdminPlacementSchema = import_zod_openapi61.z.object({
5333
5447
  */
5334
5448
  section: AdminSidebarSection,
5335
5449
  /** Display label (defaults to the plugin's npm name). */
5336
- label: import_zod_openapi61.z.string(),
5450
+ label: import_zod_openapi62.z.string(),
5337
5451
  /** Lucide icon name from a fixed allow-list. */
5338
- icon: import_zod_openapi61.z.string().optional()
5452
+ icon: import_zod_openapi62.z.string().optional()
5339
5453
  });
5340
- var PluginInfoSchema = import_zod_openapi61.z.object({
5341
- name: import_zod_openapi61.z.string(),
5342
- version: import_zod_openapi61.z.string(),
5343
- requires: import_zod_openapi61.z.array(import_zod_openapi61.z.string()).optional(),
5454
+ var PluginInfoSchema = import_zod_openapi62.z.object({
5455
+ name: import_zod_openapi62.z.string(),
5456
+ version: import_zod_openapi62.z.string(),
5457
+ requires: import_zod_openapi62.z.array(import_zod_openapi62.z.string()).optional(),
5458
+ /**
5459
+ * Core Mongoose model names this plugin declared in its
5460
+ * `CrowiPlugin.modelAccess` allow-list — the only models it may
5461
+ * reach via `ctx.model(name)`. Surfaced so an admin can audit which
5462
+ * plugins touch which core collections.
5463
+ */
5464
+ modelAccess: import_zod_openapi62.z.array(import_zod_openapi62.z.string()).optional(),
5344
5465
  /** Has a configSchema (= showable config form). */
5345
- hasConfig: import_zod_openapi61.z.boolean(),
5466
+ hasConfig: import_zod_openapi62.z.boolean(),
5346
5467
  /**
5347
5468
  * Driver-registry slots this plugin currently fills. Useful for the
5348
5469
  * admin "this plugin is the active storage driver" badge.
5349
5470
  */
5350
- registers: import_zod_openapi61.z.array(import_zod_openapi61.z.string()),
5471
+ registers: import_zod_openapi62.z.array(import_zod_openapi62.z.string()),
5351
5472
  /**
5352
5473
  * Where the plugin appears in the admin sidebar. The server always
5353
5474
  * populates this even when the plugin didn't declare its own
@@ -5360,21 +5481,32 @@ var PluginInfoSchema = import_zod_openapi61.z.object({
5360
5481
  * still apply their config on the next server restart; plugins with
5361
5482
  * it apply config changes live.
5362
5483
  */
5363
- supportsHotReload: import_zod_openapi61.z.boolean()
5484
+ supportsHotReload: import_zod_openapi62.z.boolean(),
5485
+ /**
5486
+ * `'failed'` means the plugin's `activate()` call threw during boot
5487
+ * (see `PluginManager.getFailedPlugins()`) — it is not in the loaded
5488
+ * set, has no live driver registration, and its config form is not
5489
+ * reachable. `'active'` (the default) is every plugin that activated
5490
+ * successfully. Defaults to `'active'` for wire back-compat with
5491
+ * responses that predate this field.
5492
+ */
5493
+ status: import_zod_openapi62.z.enum(["active", "failed"]).default("active"),
5494
+ /** Present only when `status: 'failed'` — the activation error message. */
5495
+ error: import_zod_openapi62.z.string().optional()
5364
5496
  });
5365
- var ListPluginsResponseSchema = import_zod_openapi61.z.object({
5366
- plugins: import_zod_openapi61.z.array(PluginInfoSchema)
5497
+ var ListPluginsResponseSchema = import_zod_openapi62.z.object({
5498
+ plugins: import_zod_openapi62.z.array(PluginInfoSchema)
5367
5499
  });
5368
- var PluginConfigResponseSchema = import_zod_openapi61.z.object({
5369
- name: import_zod_openapi61.z.string(),
5370
- fields: import_zod_openapi61.z.array(PluginFieldSchema),
5371
- values: import_zod_openapi61.z.record(import_zod_openapi61.z.string(), import_zod_openapi61.z.unknown())
5500
+ var PluginConfigResponseSchema = import_zod_openapi62.z.object({
5501
+ name: import_zod_openapi62.z.string(),
5502
+ fields: import_zod_openapi62.z.array(PluginFieldSchema),
5503
+ values: import_zod_openapi62.z.record(import_zod_openapi62.z.string(), import_zod_openapi62.z.unknown())
5372
5504
  });
5373
- var UpdatePluginConfigRequestSchema = import_zod_openapi61.z.object({
5374
- values: import_zod_openapi61.z.record(import_zod_openapi61.z.string(), import_zod_openapi61.z.unknown())
5505
+ var UpdatePluginConfigRequestSchema = import_zod_openapi62.z.object({
5506
+ values: import_zod_openapi62.z.record(import_zod_openapi62.z.string(), import_zod_openapi62.z.unknown())
5375
5507
  });
5376
- var UpdatePluginConfigResponseSchema = import_zod_openapi61.z.object({
5377
- ok: import_zod_openapi61.z.literal(true),
5508
+ var UpdatePluginConfigResponseSchema = import_zod_openapi62.z.object({
5509
+ ok: import_zod_openapi62.z.literal(true),
5378
5510
  /**
5379
5511
  * Whether at least one plugin's `reconfigure` hook ran successfully
5380
5512
  * for this save. `true` means the new values are already live on
@@ -5384,44 +5516,44 @@ var UpdatePluginConfigResponseSchema = import_zod_openapi61.z.object({
5384
5516
  * "saved, but apply failed" warning in that case via the response
5385
5517
  * `reconfigureFailed` flag.
5386
5518
  */
5387
- hotReloaded: import_zod_openapi61.z.boolean(),
5519
+ hotReloaded: import_zod_openapi62.z.boolean(),
5388
5520
  /**
5389
5521
  * True when at least one plugin's `reconfigure` was attempted and
5390
5522
  * threw. The save itself succeeded (Mongo + cache are updated) so
5391
5523
  * the next process boot will see the new values, but the *running*
5392
5524
  * process couldn't apply them. UI surfaces a warning toast.
5393
5525
  */
5394
- reconfigureFailed: import_zod_openapi61.z.boolean()
5526
+ reconfigureFailed: import_zod_openapi62.z.boolean()
5395
5527
  });
5396
- var PluginNotFoundErrorSchema = import_zod_openapi61.z.object({
5397
- error: import_zod_openapi61.z.object({
5398
- code: import_zod_openapi61.z.literal("PLUGIN_NOT_FOUND"),
5399
- message: import_zod_openapi61.z.string()
5528
+ var PluginNotFoundErrorSchema = import_zod_openapi62.z.object({
5529
+ error: import_zod_openapi62.z.object({
5530
+ code: import_zod_openapi62.z.literal("PLUGIN_NOT_FOUND"),
5531
+ message: import_zod_openapi62.z.string()
5400
5532
  })
5401
5533
  });
5402
- var PluginConfigValidationErrorSchema = import_zod_openapi61.z.object({
5403
- error: import_zod_openapi61.z.object({
5404
- code: import_zod_openapi61.z.literal("PLUGIN_CONFIG_VALIDATION_FAILED"),
5405
- message: import_zod_openapi61.z.string(),
5406
- issues: import_zod_openapi61.z.array(
5407
- import_zod_openapi61.z.object({
5408
- path: import_zod_openapi61.z.array(import_zod_openapi61.z.union([import_zod_openapi61.z.string(), import_zod_openapi61.z.number()])),
5409
- message: import_zod_openapi61.z.string()
5534
+ var PluginConfigValidationErrorSchema = import_zod_openapi62.z.object({
5535
+ error: import_zod_openapi62.z.object({
5536
+ code: import_zod_openapi62.z.literal("PLUGIN_CONFIG_VALIDATION_FAILED"),
5537
+ message: import_zod_openapi62.z.string(),
5538
+ issues: import_zod_openapi62.z.array(
5539
+ import_zod_openapi62.z.object({
5540
+ path: import_zod_openapi62.z.array(import_zod_openapi62.z.union([import_zod_openapi62.z.string(), import_zod_openapi62.z.number()])),
5541
+ message: import_zod_openapi62.z.string()
5410
5542
  })
5411
5543
  )
5412
5544
  })
5413
5545
  });
5414
- var ClearRenderCacheResponseSchema = import_zod_openapi61.z.object({
5415
- ok: import_zod_openapi61.z.literal(true),
5416
- clearedAt: import_zod_openapi61.z.string(),
5546
+ var ClearRenderCacheResponseSchema = import_zod_openapi62.z.object({
5547
+ ok: import_zod_openapi62.z.literal(true),
5548
+ clearedAt: import_zod_openapi62.z.string(),
5417
5549
  /** Number of cache rows removed. */
5418
- removedCount: import_zod_openapi61.z.number().int().min(0)
5550
+ removedCount: import_zod_openapi62.z.number().int().min(0)
5419
5551
  });
5420
5552
 
5421
5553
  // src/contracts/admin/plugins.ts
5422
- var PluginNameQuerySchema = import_zod_openapi62.z.object({ name: import_zod_openapi62.z.string() });
5423
- var PluginConfigQuerySchema = import_zod_openapi62.z.object({ name: import_zod_openapi62.z.string(), locale: import_zod_openapi62.z.string().optional() });
5424
- var listPluginsRoute = (0, import_zod_openapi62.createRoute)({
5554
+ var PluginNameQuerySchema = import_zod_openapi63.z.object({ name: import_zod_openapi63.z.string() });
5555
+ var PluginConfigQuerySchema = import_zod_openapi63.z.object({ name: import_zod_openapi63.z.string(), locale: import_zod_openapi63.z.string().optional() });
5556
+ var listPluginsRoute = (0, import_zod_openapi63.createRoute)({
5425
5557
  method: "get",
5426
5558
  path: "/admin/plugins",
5427
5559
  tags: ["admin.plugins"],
@@ -5446,7 +5578,7 @@ var listPluginsRoute = (0, import_zod_openapi62.createRoute)({
5446
5578
  }
5447
5579
  }
5448
5580
  });
5449
- var getPluginConfigRoute = (0, import_zod_openapi62.createRoute)({
5581
+ var getPluginConfigRoute = (0, import_zod_openapi63.createRoute)({
5450
5582
  method: "get",
5451
5583
  path: "/admin/plugins/config",
5452
5584
  tags: ["admin.plugins"],
@@ -5478,7 +5610,7 @@ var getPluginConfigRoute = (0, import_zod_openapi62.createRoute)({
5478
5610
  }
5479
5611
  }
5480
5612
  });
5481
- var updatePluginConfigRoute = (0, import_zod_openapi62.createRoute)({
5613
+ var updatePluginConfigRoute = (0, import_zod_openapi63.createRoute)({
5482
5614
  method: "put",
5483
5615
  path: "/admin/plugins/config",
5484
5616
  tags: ["admin.plugins"],
@@ -5517,8 +5649,8 @@ var updatePluginConfigRoute = (0, import_zod_openapi62.createRoute)({
5517
5649
  }
5518
5650
  }
5519
5651
  });
5520
- var ClearRenderCacheBodySchema = import_zod_openapi62.z.object({}).optional();
5521
- var clearRenderCacheAllRoute = (0, import_zod_openapi62.createRoute)({
5652
+ var ClearRenderCacheBodySchema = import_zod_openapi63.z.object({}).optional();
5653
+ var clearRenderCacheAllRoute = (0, import_zod_openapi63.createRoute)({
5522
5654
  method: "post",
5523
5655
  path: "/admin/plugins/render-cache/clear-all",
5524
5656
  tags: ["admin.plugins"],
@@ -5548,7 +5680,7 @@ var clearRenderCacheAllRoute = (0, import_zod_openapi62.createRoute)({
5548
5680
  }
5549
5681
  }
5550
5682
  });
5551
- var clearRenderCachePluginRoute = (0, import_zod_openapi62.createRoute)({
5683
+ var clearRenderCachePluginRoute = (0, import_zod_openapi63.createRoute)({
5552
5684
  method: "post",
5553
5685
  path: "/admin/plugins/render-cache/clear-plugin",
5554
5686
  tags: ["admin.plugins"],
@@ -5592,28 +5724,28 @@ var adminPluginsRoutes = {
5592
5724
  };
5593
5725
 
5594
5726
  // src/contracts/admin/search.ts
5595
- var import_zod_openapi64 = require("@hono/zod-openapi");
5727
+ var import_zod_openapi65 = require("@hono/zod-openapi");
5596
5728
 
5597
5729
  // src/schemas/admin/search.ts
5598
- var import_zod_openapi63 = require("@hono/zod-openapi");
5599
- var SearchDriverEntrySchema = import_zod_openapi63.z.object({
5600
- driverName: import_zod_openapi63.z.string(),
5601
- pluginName: import_zod_openapi63.z.string(),
5602
- isActive: import_zod_openapi63.z.boolean(),
5603
- supportsRebuild: import_zod_openapi63.z.boolean()
5604
- });
5605
- var ActiveSearchDriverSchema = import_zod_openapi63.z.object({
5606
- driverName: import_zod_openapi63.z.string(),
5607
- pluginName: import_zod_openapi63.z.string(),
5608
- supportsRebuild: import_zod_openapi63.z.boolean()
5609
- });
5610
- var GetSearchStatusResponseSchema = import_zod_openapi63.z.object({
5730
+ var import_zod_openapi64 = require("@hono/zod-openapi");
5731
+ var SearchDriverEntrySchema = import_zod_openapi64.z.object({
5732
+ driverName: import_zod_openapi64.z.string(),
5733
+ pluginName: import_zod_openapi64.z.string(),
5734
+ isActive: import_zod_openapi64.z.boolean(),
5735
+ supportsRebuild: import_zod_openapi64.z.boolean()
5736
+ });
5737
+ var ActiveSearchDriverSchema = import_zod_openapi64.z.object({
5738
+ driverName: import_zod_openapi64.z.string(),
5739
+ pluginName: import_zod_openapi64.z.string(),
5740
+ supportsRebuild: import_zod_openapi64.z.boolean()
5741
+ });
5742
+ var GetSearchStatusResponseSchema = import_zod_openapi64.z.object({
5611
5743
  active: ActiveSearchDriverSchema.nullable(),
5612
- drivers: import_zod_openapi63.z.array(SearchDriverEntrySchema)
5744
+ drivers: import_zod_openapi64.z.array(SearchDriverEntrySchema)
5613
5745
  });
5614
5746
 
5615
5747
  // src/contracts/admin/search.ts
5616
- var getSearchStatusRoute = (0, import_zod_openapi64.createRoute)({
5748
+ var getSearchStatusRoute = (0, import_zod_openapi65.createRoute)({
5617
5749
  method: "get",
5618
5750
  path: "/admin/search",
5619
5751
  tags: ["admin.search"],
@@ -5643,21 +5775,21 @@ var adminSearchRoutes = {
5643
5775
  };
5644
5776
 
5645
5777
  // src/contracts/admin/security.ts
5646
- var import_zod_openapi66 = require("@hono/zod-openapi");
5778
+ var import_zod_openapi67 = require("@hono/zod-openapi");
5647
5779
 
5648
5780
  // src/schemas/admin/security.ts
5649
- var import_zod_openapi65 = require("@hono/zod-openapi");
5650
- var RegistrationModeSchema = import_zod_openapi65.z.enum(["Open", "Resricted", "Closed"]);
5651
- var SecuritySettingsSchema = import_zod_openapi65.z.object({
5781
+ var import_zod_openapi66 = require("@hono/zod-openapi");
5782
+ var RegistrationModeSchema = import_zod_openapi66.z.enum(["Open", "Resricted", "Closed"]);
5783
+ var SecuritySettingsSchema = import_zod_openapi66.z.object({
5652
5784
  registrationMode: RegistrationModeSchema,
5653
- registrationWhiteList: import_zod_openapi65.z.array(import_zod_openapi65.z.string())
5785
+ registrationWhiteList: import_zod_openapi66.z.array(import_zod_openapi66.z.string())
5654
5786
  });
5655
5787
  var UpdateSecuritySettingsRequestSchema = SecuritySettingsSchema;
5656
5788
  var GetSecuritySettingsResponseSchema = SecuritySettingsSchema;
5657
5789
  var UpdateSecuritySettingsResponseSchema = SecuritySettingsSchema;
5658
5790
 
5659
5791
  // src/contracts/admin/security.ts
5660
- var getSecuritySettingsRoute = (0, import_zod_openapi66.createRoute)({
5792
+ var getSecuritySettingsRoute = (0, import_zod_openapi67.createRoute)({
5661
5793
  method: "get",
5662
5794
  path: "/admin/security",
5663
5795
  tags: ["admin.security"],
@@ -5682,7 +5814,7 @@ var getSecuritySettingsRoute = (0, import_zod_openapi66.createRoute)({
5682
5814
  }
5683
5815
  }
5684
5816
  });
5685
- var updateSecuritySettingsRoute = (0, import_zod_openapi66.createRoute)({
5817
+ var updateSecuritySettingsRoute = (0, import_zod_openapi67.createRoute)({
5686
5818
  method: "put",
5687
5819
  path: "/admin/security",
5688
5820
  tags: ["admin.security"],
@@ -5718,26 +5850,26 @@ var adminSecurityRoutes = {
5718
5850
  };
5719
5851
 
5720
5852
  // src/contracts/admin/storage.ts
5721
- var import_zod_openapi68 = require("@hono/zod-openapi");
5853
+ var import_zod_openapi69 = require("@hono/zod-openapi");
5722
5854
 
5723
5855
  // src/schemas/admin/storage.ts
5724
- var import_zod_openapi67 = require("@hono/zod-openapi");
5725
- var StorageDriverEntrySchema = import_zod_openapi67.z.object({
5726
- driverName: import_zod_openapi67.z.string(),
5727
- pluginName: import_zod_openapi67.z.string(),
5728
- isActive: import_zod_openapi67.z.boolean()
5856
+ var import_zod_openapi68 = require("@hono/zod-openapi");
5857
+ var StorageDriverEntrySchema = import_zod_openapi68.z.object({
5858
+ driverName: import_zod_openapi68.z.string(),
5859
+ pluginName: import_zod_openapi68.z.string(),
5860
+ isActive: import_zod_openapi68.z.boolean()
5729
5861
  });
5730
- var ActiveStorageDriverSchema = import_zod_openapi67.z.object({
5731
- driverName: import_zod_openapi67.z.string(),
5732
- pluginName: import_zod_openapi67.z.string()
5862
+ var ActiveStorageDriverSchema = import_zod_openapi68.z.object({
5863
+ driverName: import_zod_openapi68.z.string(),
5864
+ pluginName: import_zod_openapi68.z.string()
5733
5865
  });
5734
- var GetStorageStatusResponseSchema = import_zod_openapi67.z.object({
5866
+ var GetStorageStatusResponseSchema = import_zod_openapi68.z.object({
5735
5867
  active: ActiveStorageDriverSchema.nullable(),
5736
- drivers: import_zod_openapi67.z.array(StorageDriverEntrySchema)
5868
+ drivers: import_zod_openapi68.z.array(StorageDriverEntrySchema)
5737
5869
  });
5738
5870
 
5739
5871
  // src/contracts/admin/storage.ts
5740
- var getStorageStatusRoute = (0, import_zod_openapi68.createRoute)({
5872
+ var getStorageStatusRoute = (0, import_zod_openapi69.createRoute)({
5741
5873
  method: "get",
5742
5874
  path: "/admin/storage",
5743
5875
  tags: ["admin.storage"],
@@ -5767,94 +5899,94 @@ var adminStorageRoutes = {
5767
5899
  };
5768
5900
 
5769
5901
  // src/contracts/admin/users.ts
5770
- var import_zod_openapi71 = require("@hono/zod-openapi");
5902
+ var import_zod_openapi72 = require("@hono/zod-openapi");
5771
5903
 
5772
5904
  // src/schemas/admin/users.ts
5773
- var import_zod_openapi70 = require("@hono/zod-openapi");
5905
+ var import_zod_openapi71 = require("@hono/zod-openapi");
5774
5906
 
5775
5907
  // src/schemas/admin/_pager.ts
5776
- var import_zod_openapi69 = require("@hono/zod-openapi");
5777
- var AdminPagerSchema = import_zod_openapi69.z.object({
5778
- page: import_zod_openapi69.z.number(),
5779
- pagesCount: import_zod_openapi69.z.number(),
5780
- pages: import_zod_openapi69.z.array(import_zod_openapi69.z.number()),
5781
- total: import_zod_openapi69.z.number(),
5782
- previous: import_zod_openapi69.z.number().nullable(),
5783
- previousDots: import_zod_openapi69.z.boolean(),
5784
- next: import_zod_openapi69.z.number().nullable(),
5785
- nextDots: import_zod_openapi69.z.boolean()
5908
+ var import_zod_openapi70 = require("@hono/zod-openapi");
5909
+ var AdminPagerSchema = import_zod_openapi70.z.object({
5910
+ page: import_zod_openapi70.z.number(),
5911
+ pagesCount: import_zod_openapi70.z.number(),
5912
+ pages: import_zod_openapi70.z.array(import_zod_openapi70.z.number()),
5913
+ total: import_zod_openapi70.z.number(),
5914
+ previous: import_zod_openapi70.z.number().nullable(),
5915
+ previousDots: import_zod_openapi70.z.boolean(),
5916
+ next: import_zod_openapi70.z.number().nullable(),
5917
+ nextDots: import_zod_openapi70.z.boolean()
5786
5918
  });
5787
5919
 
5788
5920
  // src/schemas/admin/users.ts
5789
- var ListAdminUsersRequestSchema = import_zod_openapi70.z.object({
5790
- q: import_zod_openapi70.z.string().optional(),
5921
+ var ListAdminUsersRequestSchema = import_zod_openapi71.z.object({
5922
+ q: import_zod_openapi71.z.string().optional(),
5791
5923
  /**
5792
5924
  * Optional numeric user-status filter (see `UserStatusEnum`). When set, only
5793
5925
  * users in that status are returned — used by the "user approval" queue
5794
5926
  * screen to list `REGISTERED` (= awaiting admin approval) users.
5795
5927
  */
5796
- status: import_zod_openapi70.z.coerce.number().int().optional(),
5797
- page: import_zod_openapi70.z.coerce.number().int().min(1).optional().default(1),
5798
- limit: import_zod_openapi70.z.coerce.number().int().min(1).max(100).optional().default(50)
5928
+ status: import_zod_openapi71.z.coerce.number().int().optional(),
5929
+ page: import_zod_openapi71.z.coerce.number().int().min(1).optional().default(1),
5930
+ limit: import_zod_openapi71.z.coerce.number().int().min(1).max(100).optional().default(50)
5799
5931
  });
5800
- var ListAdminUsersResponseSchema = import_zod_openapi70.z.object({
5801
- users: import_zod_openapi70.z.array(UserPublicSchema),
5932
+ var ListAdminUsersResponseSchema = import_zod_openapi71.z.object({
5933
+ users: import_zod_openapi71.z.array(UserPublicSchema),
5802
5934
  pager: AdminPagerSchema
5803
5935
  });
5804
- var SearchAdminUsersByEmailRequestSchema = import_zod_openapi70.z.object({
5805
- email: import_zod_openapi70.z.string().min(1)
5936
+ var SearchAdminUsersByEmailRequestSchema = import_zod_openapi71.z.object({
5937
+ email: import_zod_openapi71.z.string().min(1)
5806
5938
  });
5807
- var SearchAdminUsersByEmailResponseSchema = import_zod_openapi70.z.object({
5808
- users: import_zod_openapi70.z.array(UserPublicSchema)
5939
+ var SearchAdminUsersByEmailResponseSchema = import_zod_openapi71.z.object({
5940
+ users: import_zod_openapi71.z.array(UserPublicSchema)
5809
5941
  });
5810
- var AdminUserIdParamSchema = import_zod_openapi70.z.object({
5811
- id: import_zod_openapi70.z.string()
5942
+ var AdminUserIdParamSchema = import_zod_openapi71.z.object({
5943
+ id: import_zod_openapi71.z.string()
5812
5944
  });
5813
- var InviteUsersRequestSchema = import_zod_openapi70.z.object({
5814
- emailList: import_zod_openapi70.z.array(import_zod_openapi70.z.string().email()).min(1),
5815
- sendEmail: import_zod_openapi70.z.boolean().optional().default(false)
5945
+ var InviteUsersRequestSchema = import_zod_openapi71.z.object({
5946
+ emailList: import_zod_openapi71.z.array(import_zod_openapi71.z.string().email()).min(1),
5947
+ sendEmail: import_zod_openapi71.z.boolean().optional().default(false)
5816
5948
  });
5817
- var InvitedUserResultSchema = import_zod_openapi70.z.discriminatedUnion("status", [
5818
- import_zod_openapi70.z.object({
5819
- email: import_zod_openapi70.z.string(),
5820
- status: import_zod_openapi70.z.literal("created"),
5821
- userId: import_zod_openapi70.z.string()
5949
+ var InvitedUserResultSchema = import_zod_openapi71.z.discriminatedUnion("status", [
5950
+ import_zod_openapi71.z.object({
5951
+ email: import_zod_openapi71.z.string(),
5952
+ status: import_zod_openapi71.z.literal("created"),
5953
+ userId: import_zod_openapi71.z.string()
5822
5954
  }),
5823
- import_zod_openapi70.z.object({
5824
- email: import_zod_openapi70.z.string(),
5825
- status: import_zod_openapi70.z.literal("exists")
5955
+ import_zod_openapi71.z.object({
5956
+ email: import_zod_openapi71.z.string(),
5957
+ status: import_zod_openapi71.z.literal("exists")
5826
5958
  }),
5827
- import_zod_openapi70.z.object({
5828
- email: import_zod_openapi70.z.string(),
5829
- status: import_zod_openapi70.z.literal("failed")
5959
+ import_zod_openapi71.z.object({
5960
+ email: import_zod_openapi71.z.string(),
5961
+ status: import_zod_openapi71.z.literal("failed")
5830
5962
  })
5831
5963
  ]);
5832
- var InviteUsersResponseSchema = import_zod_openapi70.z.object({
5833
- results: import_zod_openapi70.z.array(InvitedUserResultSchema)
5964
+ var InviteUsersResponseSchema = import_zod_openapi71.z.object({
5965
+ results: import_zod_openapi71.z.array(InvitedUserResultSchema)
5834
5966
  });
5835
- var EditAdminUserRequestSchema = import_zod_openapi70.z.object({
5836
- name: import_zod_openapi70.z.string().min(1),
5837
- email: import_zod_openapi70.z.string().email()
5967
+ var EditAdminUserRequestSchema = import_zod_openapi71.z.object({
5968
+ name: import_zod_openapi71.z.string().min(1),
5969
+ email: import_zod_openapi71.z.string().email()
5838
5970
  });
5839
- var AdminUserMutationResponseSchema = import_zod_openapi70.z.object({
5971
+ var AdminUserMutationResponseSchema = import_zod_openapi71.z.object({
5840
5972
  user: UserPublicSchema
5841
5973
  });
5842
- var ResetPasswordResponseSchema = import_zod_openapi70.z.object({
5974
+ var ResetPasswordResponseSchema = import_zod_openapi71.z.object({
5843
5975
  user: UserPublicSchema,
5844
- newPassword: import_zod_openapi70.z.string()
5976
+ newPassword: import_zod_openapi71.z.string()
5845
5977
  });
5846
- var UpdateAdminUserEmailRequestSchema = import_zod_openapi70.z.object({
5847
- email: import_zod_openapi70.z.string().email()
5978
+ var UpdateAdminUserEmailRequestSchema = import_zod_openapi71.z.object({
5979
+ email: import_zod_openapi71.z.string().email()
5848
5980
  });
5849
- var DeleteAdminUserResponseSchema = import_zod_openapi70.z.object({
5850
- deletedId: import_zod_openapi70.z.string()
5981
+ var DeleteAdminUserResponseSchema = import_zod_openapi71.z.object({
5982
+ deletedId: import_zod_openapi71.z.string()
5851
5983
  });
5852
- var PendingUsersCountResponseSchema = import_zod_openapi70.z.object({
5853
- count: import_zod_openapi70.z.number().int().nonnegative()
5984
+ var PendingUsersCountResponseSchema = import_zod_openapi71.z.object({
5985
+ count: import_zod_openapi71.z.number().int().nonnegative()
5854
5986
  });
5855
5987
 
5856
5988
  // src/contracts/admin/users.ts
5857
- var listUsersRoute = (0, import_zod_openapi71.createRoute)({
5989
+ var listUsersRoute = (0, import_zod_openapi72.createRoute)({
5858
5990
  method: "get",
5859
5991
  path: "/admin/users",
5860
5992
  tags: ["admin.users"],
@@ -5882,7 +6014,7 @@ var listUsersRoute = (0, import_zod_openapi71.createRoute)({
5882
6014
  }
5883
6015
  }
5884
6016
  });
5885
- var searchUsersByEmailRoute = (0, import_zod_openapi71.createRoute)({
6017
+ var searchUsersByEmailRoute = (0, import_zod_openapi72.createRoute)({
5886
6018
  method: "get",
5887
6019
  path: "/admin/users/search",
5888
6020
  tags: ["admin.users"],
@@ -5910,7 +6042,7 @@ var searchUsersByEmailRoute = (0, import_zod_openapi71.createRoute)({
5910
6042
  }
5911
6043
  }
5912
6044
  });
5913
- var inviteUsersRoute = (0, import_zod_openapi71.createRoute)({
6045
+ var inviteUsersRoute = (0, import_zod_openapi72.createRoute)({
5914
6046
  method: "post",
5915
6047
  path: "/admin/users/invite",
5916
6048
  tags: ["admin.users"],
@@ -5944,7 +6076,7 @@ var inviteUsersRoute = (0, import_zod_openapi71.createRoute)({
5944
6076
  }
5945
6077
  }
5946
6078
  });
5947
- var editUserRoute = (0, import_zod_openapi71.createRoute)({
6079
+ var editUserRoute = (0, import_zod_openapi72.createRoute)({
5948
6080
  method: "patch",
5949
6081
  path: "/admin/users/{id}",
5950
6082
  tags: ["admin.users"],
@@ -5987,7 +6119,7 @@ var editUserRoute = (0, import_zod_openapi71.createRoute)({
5987
6119
  }
5988
6120
  }
5989
6121
  });
5990
- var makeAdminRoute = (0, import_zod_openapi71.createRoute)({
6122
+ var makeAdminRoute = (0, import_zod_openapi72.createRoute)({
5991
6123
  method: "put",
5992
6124
  path: "/admin/users/{id}/admin",
5993
6125
  tags: ["admin.users"],
@@ -6023,7 +6155,7 @@ var makeAdminRoute = (0, import_zod_openapi71.createRoute)({
6023
6155
  }
6024
6156
  }
6025
6157
  });
6026
- var removeFromAdminRoute = (0, import_zod_openapi71.createRoute)({
6158
+ var removeFromAdminRoute = (0, import_zod_openapi72.createRoute)({
6027
6159
  method: "delete",
6028
6160
  path: "/admin/users/{id}/admin",
6029
6161
  tags: ["admin.users"],
@@ -6059,7 +6191,7 @@ var removeFromAdminRoute = (0, import_zod_openapi71.createRoute)({
6059
6191
  }
6060
6192
  }
6061
6193
  });
6062
- var activateUserRoute = (0, import_zod_openapi71.createRoute)({
6194
+ var activateUserRoute = (0, import_zod_openapi72.createRoute)({
6063
6195
  method: "put",
6064
6196
  path: "/admin/users/{id}/status/active",
6065
6197
  tags: ["admin.users"],
@@ -6095,7 +6227,7 @@ var activateUserRoute = (0, import_zod_openapi71.createRoute)({
6095
6227
  }
6096
6228
  }
6097
6229
  });
6098
- var suspendUserRoute = (0, import_zod_openapi71.createRoute)({
6230
+ var suspendUserRoute = (0, import_zod_openapi72.createRoute)({
6099
6231
  method: "put",
6100
6232
  path: "/admin/users/{id}/status/suspended",
6101
6233
  tags: ["admin.users"],
@@ -6131,7 +6263,7 @@ var suspendUserRoute = (0, import_zod_openapi71.createRoute)({
6131
6263
  }
6132
6264
  }
6133
6265
  });
6134
- var resetPasswordRoute = (0, import_zod_openapi71.createRoute)({
6266
+ var resetPasswordRoute = (0, import_zod_openapi72.createRoute)({
6135
6267
  method: "post",
6136
6268
  path: "/admin/users/{id}/reset-password",
6137
6269
  tags: ["admin.users"],
@@ -6167,7 +6299,7 @@ var resetPasswordRoute = (0, import_zod_openapi71.createRoute)({
6167
6299
  }
6168
6300
  }
6169
6301
  });
6170
- var resendInviteRoute = (0, import_zod_openapi71.createRoute)({
6302
+ var resendInviteRoute = (0, import_zod_openapi72.createRoute)({
6171
6303
  method: "post",
6172
6304
  path: "/admin/users/{id}/resend-invite",
6173
6305
  tags: ["admin.users"],
@@ -6207,7 +6339,7 @@ var resendInviteRoute = (0, import_zod_openapi71.createRoute)({
6207
6339
  }
6208
6340
  }
6209
6341
  });
6210
- var updateUserEmailRoute = (0, import_zod_openapi71.createRoute)({
6342
+ var updateUserEmailRoute = (0, import_zod_openapi72.createRoute)({
6211
6343
  method: "put",
6212
6344
  path: "/admin/users/{id}/email",
6213
6345
  tags: ["admin.users"],
@@ -6250,7 +6382,7 @@ var updateUserEmailRoute = (0, import_zod_openapi71.createRoute)({
6250
6382
  }
6251
6383
  }
6252
6384
  });
6253
- var pendingUsersCountRoute = (0, import_zod_openapi71.createRoute)({
6385
+ var pendingUsersCountRoute = (0, import_zod_openapi72.createRoute)({
6254
6386
  method: "get",
6255
6387
  path: "/admin/users/pending-count",
6256
6388
  tags: ["admin.users"],
@@ -6275,7 +6407,7 @@ var pendingUsersCountRoute = (0, import_zod_openapi71.createRoute)({
6275
6407
  }
6276
6408
  }
6277
6409
  });
6278
- var deleteUserRoute = (0, import_zod_openapi71.createRoute)({
6410
+ var deleteUserRoute = (0, import_zod_openapi72.createRoute)({
6279
6411
  method: "delete",
6280
6412
  path: "/admin/users/{id}",
6281
6413
  tags: ["admin.users"],
@@ -6332,7 +6464,7 @@ var adminUsersRoutes = {
6332
6464
  };
6333
6465
 
6334
6466
  // src/client.ts
6335
- var import_zod_openapi72 = require("@hono/zod-openapi");
6467
+ var import_zod_openapi73 = require("@hono/zod-openapi");
6336
6468
  var import_client = require("hono/client");
6337
6469
  var stubUser = {
6338
6470
  id: "",
@@ -6591,7 +6723,7 @@ var stubListPlugins = { plugins: [] };
6591
6723
  var stubPluginConfig = { name: "", fields: [], values: {} };
6592
6724
  var stubUpdatePluginConfig = { ok: true, hotReloaded: false, reconfigureFailed: false };
6593
6725
  var stubClearRenderCache = { ok: true, clearedAt: "", removedCount: 0 };
6594
- var appAuthMeUserChain = new import_zod_openapi72.OpenAPIHono().openapi(
6726
+ var appAuthMeUserChain = new import_zod_openapi73.OpenAPIHono().openapi(
6595
6727
  appRoutes.getAppInfoRoute,
6596
6728
  (c) => c.json({ title: null, confidential: null, version: "", apiVersion: "v2", capabilities: [], canSelfRegister: true }, 200)
6597
6729
  ).openapi(installerRoutes.getInstallerStatusRoute, (c) => c.json({ status: "installer_required" }, 200)).openapi(installerRoutes.createAdminRoute, (c) => c.json({ status: "ok" }, 200)).openapi(tokenAuthRoutes.tokenLoginRoute, (c) => c.json(stubTokens, 200)).openapi(tokenAuthRoutes.tokenRegisterRoute, (c) => c.json({ status: "confirmation_required" }, 200)).openapi(inviteAcceptRoutes.invitePreviewRoute, (c) => c.json({ email: "stub@example.com" }, 200)).openapi(inviteAcceptRoutes.acceptInviteRoute, (c) => c.json(stubTokens, 200)).openapi(passwordResetRoutes.forgotPasswordRoute, (c) => c.json({ ok: true }, 200)).openapi(passwordResetRoutes.validateResetTokenRoute, (c) => c.json({ ok: true }, 200)).openapi(passwordResetRoutes.selfResetPasswordRoute, (c) => c.json(stubTokens, 200)).openapi(activationRoutes.validateActivationTokenRoute, (c) => c.json({ ok: true }, 200)).openapi(activationRoutes.activateAccountRoute, (c) => c.json(stubTokens, 200)).openapi(emailChangeRoutes.validateEmailChangeTokenRoute, (c) => c.json({ ok: true, email: "stub@example.com" }, 200)).openapi(emailChangeRoutes.confirmEmailChangeRoute, (c) => c.json({ ok: true, email: "stub@example.com" }, 200)).openapi(tokenAuthRoutes.tokenRefreshRoute, (c) => c.json(stubTokens, 200)).openapi(tokenAuthRoutes.tokenLogoutRoute, (c) => c.json({ message: "" }, 200)).openapi(
@@ -6611,54 +6743,38 @@ var appAuthMeUserChain = new import_zod_openapi72.OpenAPIHono().openapi(
6611
6743
  200
6612
6744
  )
6613
6745
  ).openapi(meRoutes.getProfileRoute, (c) => c.json(stubProfile, 200)).openapi(meRoutes.updateProfileRoute, (c) => c.json(stubProfile, 200)).openapi(meRoutes.updateThemeRoute, (c) => c.json({ status: "ok", theme: "system" }, 200)).openapi(meRoutes.uploadPictureRoute, (c) => c.json({ status: true }, 200)).openapi(meRoutes.deletePictureRoute, (c) => c.json({ status: "ok" }, 200)).openapi(meRoutes.updatePasswordRoute, (c) => c.json({ status: "ok", message: "" }, 200)).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.listMembersRoute, (c) => c.json(stubListUsers, 200));
6614
- var bookmarkBacklinkCommentRevisionChain = new import_zod_openapi72.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));
6615
- var pageChain = new import_zod_openapi72.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.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));
6616
- var lateContractApp = new import_zod_openapi72.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));
6617
- var adminSettingsContractApp = new import_zod_openapi72.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));
6618
- var adminUsersPluginsContractApp = new import_zod_openapi72.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));
6619
- var oauthContractApp = new import_zod_openapi72.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));
6746
+ var bookmarkBacklinkCommentRevisionChain = new import_zod_openapi73.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));
6747
+ var pageChain = new import_zod_openapi73.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));
6748
+ var lateContractApp = new import_zod_openapi73.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));
6749
+ var adminSettingsContractApp = new import_zod_openapi73.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));
6750
+ var adminUsersPluginsContractApp = new import_zod_openapi73.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));
6751
+ var oauthContractApp = new import_zod_openapi73.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));
6620
6752
  var createClient = (baseUrl, options = {}) => (0, import_client.hc)(baseUrl, {
6621
6753
  headers: options.headers,
6622
6754
  fetch: options.fetch
6623
6755
  });
6624
6756
 
6625
- // src/schemas/app-capabilities.ts
6626
- var STATIC_CAPABILITIES = [
6627
- "oauth",
6628
- // The oauth:* tags mirror GRANT_TYPES_SUPPORTED + the S256 PKCE method
6629
- // (schemas/oauth-endpoints.ts / the RFC 8414 discovery doc). Keep in sync.
6630
- "oauth:auth-code",
6631
- "oauth:device",
6632
- "oauth:pkce",
6633
- "pat",
6634
- "pages",
6635
- "comments",
6636
- "bookmarks",
6637
- "attachments",
6638
- "notifications"
6639
- ];
6640
- var API_SURFACE_VERSION = "v2";
6641
-
6642
6757
  // src/schemas/mail-token.ts
6643
- var import_zod_openapi73 = require("@hono/zod-openapi");
6644
- var MailTokenPurposeSchema = import_zod_openapi73.z.enum(["invite", "activate", "reset", "email-change"]);
6645
- var MailTokenPayloadSchema = import_zod_openapi73.z.object({
6758
+ var import_zod_openapi74 = require("@hono/zod-openapi");
6759
+ var MailTokenPurposeSchema = import_zod_openapi74.z.enum(["invite", "activate", "reset", "email-change"]);
6760
+ var MailTokenPayloadSchema = import_zod_openapi74.z.object({
6646
6761
  purpose: MailTokenPurposeSchema,
6647
- userId: import_zod_openapi73.z.string(),
6762
+ userId: import_zod_openapi74.z.string(),
6648
6763
  /** Target address. For `email-change` this is the NEW address. */
6649
- email: import_zod_openapi73.z.string().email(),
6764
+ email: import_zod_openapi74.z.string().email(),
6650
6765
  /**
6651
6766
  * For `email-change`: the account's email at issue time. The confirm
6652
6767
  * endpoint rejects the token unless it still matches, making the token
6653
6768
  * single-use (a stale token cannot revert a later change).
6654
6769
  */
6655
- fromEmail: import_zod_openapi73.z.string().email().optional(),
6770
+ fromEmail: import_zod_openapi74.z.string().email().optional(),
6656
6771
  // iat / exp are injected and verified by the JWT layer.
6657
- iat: import_zod_openapi73.z.number().optional(),
6658
- exp: import_zod_openapi73.z.number().optional()
6772
+ iat: import_zod_openapi74.z.number().optional(),
6773
+ exp: import_zod_openapi74.z.number().optional()
6659
6774
  });
6660
6775
  // Annotate the CommonJS export names for ESM import in node:
6661
6776
  0 && (module.exports = {
6777
+ ALL_CAPABILITIES,
6662
6778
  ALL_SCOPES,
6663
6779
  API_SURFACE_VERSION,
6664
6780
  AccessTokenSchema,
@@ -6697,6 +6813,8 @@ var MailTokenPayloadSchema = import_zod_openapi73.z.object({
6697
6813
  BacklinkSchema,
6698
6814
  BookmarkResponseSchema,
6699
6815
  BookmarkSchema,
6816
+ CapabilitySchema,
6817
+ ClaimPageLinkAccessResponseSchema,
6700
6818
  ClearRenderCacheResponseSchema,
6701
6819
  CollabForceReloadMessageSchema,
6702
6820
  CollabSaveErrorSchema,
@@ -6720,6 +6838,7 @@ var MailTokenPayloadSchema = import_zod_openapi73.z.object({
6720
6838
  DEVICE_CODE_GRANT_TYPE,
6721
6839
  DISCOVERY_SCOPES_SUPPORTED,
6722
6840
  DND_EXTRA_UPLOAD_MIME,
6841
+ DYNAMIC_CAPABILITIES,
6723
6842
  DeleteAdminUserResponseSchema,
6724
6843
  DeleteCommentRequestSchema,
6725
6844
  DeleteCommentResponseSchema,
@@ -6846,7 +6965,9 @@ var MailTokenPayloadSchema = import_zod_openapi73.z.object({
6846
6965
  PluginInfoSchema,
6847
6966
  PluginNotFoundErrorSchema,
6848
6967
  PresenceClientMessageSchema,
6968
+ PresenceCommentChangedMessageSchema,
6849
6969
  PresenceHeartbeatMessageSchema,
6970
+ PresencePageUpdatedMessageSchema,
6850
6971
  PresenceServerMessageSchema,
6851
6972
  PresenceTokenPayloadSchema,
6852
6973
  PresenceTokenResponseSchema,
@@ -6971,6 +7092,7 @@ var MailTokenPayloadSchema = import_zod_openapi73.z.object({
6971
7092
  backlinkRoutes,
6972
7093
  bookmarkRoutes,
6973
7094
  cancelDraftRoute,
7095
+ claimPageLinkAccessRoute,
6974
7096
  clearRenderCacheAllRoute,
6975
7097
  clearRenderCachePluginRoute,
6976
7098
  commentRoutes,