@crowi/api-contract 2.0.0-alpha.6 → 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,
@@ -334,6 +338,7 @@ __export(index_exports, {
334
338
  backlinkRoutes: () => backlinkRoutes,
335
339
  bookmarkRoutes: () => bookmarkRoutes,
336
340
  cancelDraftRoute: () => cancelDraftRoute,
341
+ claimPageLinkAccessRoute: () => claimPageLinkAccessRoute,
337
342
  clearRenderCacheAllRoute: () => clearRenderCacheAllRoute,
338
343
  clearRenderCachePluginRoute: () => clearRenderCachePluginRoute,
339
344
  commentRoutes: () => commentRoutes,
@@ -669,7 +674,7 @@ function stripKnownHtmlTags(text) {
669
674
  }
670
675
 
671
676
  // src/contracts/app.ts
672
- var import_zod_openapi4 = require("@hono/zod-openapi");
677
+ var import_zod_openapi5 = require("@hono/zod-openapi");
673
678
 
674
679
  // src/schemas/common.ts
675
680
  var import_zod_openapi2 = require("@hono/zod-openapi");
@@ -764,18 +769,41 @@ var ForbiddenErrorSchema = ApiErrorSchema.extend({
764
769
  });
765
770
 
766
771
  // src/schemas/app.ts
772
+ var import_zod_openapi4 = require("@hono/zod-openapi");
773
+
774
+ // src/schemas/app-capabilities.ts
767
775
  var import_zod_openapi3 = require("@hono/zod-openapi");
768
- var AppInfoResponseSchema = import_zod_openapi3.z.object({
769
- title: import_zod_openapi3.z.string().nullable(),
770
- confidential: import_zod_openapi3.z.string().nullable(),
771
- version: import_zod_openapi3.z.string(),
772
- apiVersion: import_zod_openapi3.z.string(),
773
- capabilities: import_zod_openapi3.z.array(import_zod_openapi3.z.string()),
774
- 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()
775
803
  });
776
804
 
777
805
  // src/contracts/app.ts
778
- var getAppInfoRoute = (0, import_zod_openapi4.createRoute)({
806
+ var getAppInfoRoute = (0, import_zod_openapi5.createRoute)({
779
807
  method: "get",
780
808
  path: "/app/info",
781
809
  tags: ["app"],
@@ -802,29 +830,29 @@ var getAppInfoRoute = (0, import_zod_openapi4.createRoute)({
802
830
  var appRoutes = { getAppInfoRoute };
803
831
 
804
832
  // src/contracts/installer.ts
805
- var import_zod_openapi6 = require("@hono/zod-openapi");
833
+ var import_zod_openapi7 = require("@hono/zod-openapi");
806
834
 
807
835
  // src/schemas/installer.ts
808
- var import_zod_openapi5 = require("@hono/zod-openapi");
809
- var InstallerStatusResponseSchema = import_zod_openapi5.z.object({
810
- status: import_zod_openapi5.z.enum(["installer_required", "already_installed"])
811
- });
812
- var CreateAdminRequestSchema = import_zod_openapi5.z.object({
813
- registerForm: import_zod_openapi5.z.object({
814
- username: import_zod_openapi5.z.string().min(1).regex(/^[\da-zA-Z\-_.]+$/, "username may only contain letters, digits, hyphens, underscores, and dots"),
815
- name: import_zod_openapi5.z.string().min(1),
816
- email: import_zod_openapi5.z.string().email(),
817
- 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")
818
846
  })
819
847
  });
820
- var CreateAdminResponseSchema = import_zod_openapi5.z.object({
821
- status: import_zod_openapi5.z.enum(["ok", "error"]),
822
- message: import_zod_openapi5.z.string().optional(),
823
- 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()
824
852
  });
825
853
 
826
854
  // src/contracts/installer.ts
827
- var getInstallerStatusRoute = (0, import_zod_openapi6.createRoute)({
855
+ var getInstallerStatusRoute = (0, import_zod_openapi7.createRoute)({
828
856
  method: "get",
829
857
  path: "/installer",
830
858
  tags: ["installer"],
@@ -848,7 +876,7 @@ var getInstallerStatusRoute = (0, import_zod_openapi6.createRoute)({
848
876
  }
849
877
  }
850
878
  });
851
- var createAdminRoute = (0, import_zod_openapi6.createRoute)({
879
+ var createAdminRoute = (0, import_zod_openapi7.createRoute)({
852
880
  method: "post",
853
881
  path: "/installer/createAdmin",
854
882
  tags: ["installer"],
@@ -892,56 +920,56 @@ var createAdminRoute = (0, import_zod_openapi6.createRoute)({
892
920
  var installerRoutes = { getInstallerStatusRoute, createAdminRoute };
893
921
 
894
922
  // src/contracts/tokenAuth.ts
895
- var import_zod_openapi8 = require("@hono/zod-openapi");
923
+ var import_zod_openapi9 = require("@hono/zod-openapi");
896
924
 
897
925
  // src/schemas/auth.ts
898
- var import_zod_openapi7 = require("@hono/zod-openapi");
899
- var TokenAuthLoginRequestSchema = import_zod_openapi7.z.object({
900
- email: import_zod_openapi7.z.string().email(),
901
- password: import_zod_openapi7.z.string().min(6)
902
- });
903
- var TokenAuthResponseSchema = import_zod_openapi7.z.object({
904
- accessToken: import_zod_openapi7.z.string(),
905
- refreshToken: import_zod_openapi7.z.string(),
906
- 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(),
907
935
  // seconds until expiration
908
- user: import_zod_openapi7.z.object({
909
- id: import_zod_openapi7.z.string(),
910
- username: import_zod_openapi7.z.string(),
911
- email: import_zod_openapi7.z.string().email(),
912
- name: import_zod_openapi7.z.string(),
913
- image: import_zod_openapi7.z.string().optional(),
914
- 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()
915
943
  })
916
944
  });
917
- var RefreshTokenRequestSchema = import_zod_openapi7.z.object({
918
- refreshToken: import_zod_openapi7.z.string()
945
+ var RefreshTokenRequestSchema = import_zod_openapi8.z.object({
946
+ refreshToken: import_zod_openapi8.z.string()
919
947
  });
920
- var TokenAuthRegisterRequestSchema = import_zod_openapi7.z.object({
921
- username: import_zod_openapi7.z.string(),
922
- name: import_zod_openapi7.z.string(),
923
- email: import_zod_openapi7.z.string().email(),
924
- 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)
925
953
  });
926
- var RegisterPendingResponseSchema = import_zod_openapi7.z.object({
927
- 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"])
928
956
  });
929
957
 
930
958
  // src/contracts/tokenAuth.ts
931
- var TokenLogoutResponseSchema = import_zod_openapi8.z.object({ message: import_zod_openapi8.z.string() });
932
- var TokenMeResponseSchema = import_zod_openapi8.z.object({
933
- user: import_zod_openapi8.z.object({
934
- id: import_zod_openapi8.z.string(),
935
- username: import_zod_openapi8.z.string(),
936
- email: import_zod_openapi8.z.string().email(),
937
- name: import_zod_openapi8.z.string(),
938
- image: import_zod_openapi8.z.string().optional(),
939
- status: import_zod_openapi8.z.number(),
940
- admin: import_zod_openapi8.z.boolean().optional(),
941
- 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()
942
970
  })
943
971
  });
944
- var tokenLoginRoute = (0, import_zod_openapi8.createRoute)({
972
+ var tokenLoginRoute = (0, import_zod_openapi9.createRoute)({
945
973
  method: "post",
946
974
  path: "/auth/login",
947
975
  tags: ["tokenAuth"],
@@ -978,7 +1006,7 @@ var tokenLoginRoute = (0, import_zod_openapi8.createRoute)({
978
1006
  }
979
1007
  }
980
1008
  });
981
- var tokenRegisterRoute = (0, import_zod_openapi8.createRoute)({
1009
+ var tokenRegisterRoute = (0, import_zod_openapi9.createRoute)({
982
1010
  method: "post",
983
1011
  path: "/auth/register",
984
1012
  tags: ["tokenAuth"],
@@ -1019,7 +1047,7 @@ var tokenRegisterRoute = (0, import_zod_openapi8.createRoute)({
1019
1047
  }
1020
1048
  }
1021
1049
  });
1022
- var tokenRefreshRoute = (0, import_zod_openapi8.createRoute)({
1050
+ var tokenRefreshRoute = (0, import_zod_openapi9.createRoute)({
1023
1051
  method: "post",
1024
1052
  path: "/auth/refresh",
1025
1053
  tags: ["tokenAuth"],
@@ -1056,7 +1084,7 @@ var tokenRefreshRoute = (0, import_zod_openapi8.createRoute)({
1056
1084
  }
1057
1085
  }
1058
1086
  });
1059
- var tokenLogoutRoute = (0, import_zod_openapi8.createRoute)({
1087
+ var tokenLogoutRoute = (0, import_zod_openapi9.createRoute)({
1060
1088
  method: "post",
1061
1089
  path: "/auth/logout",
1062
1090
  tags: ["tokenAuth"],
@@ -1066,7 +1094,7 @@ var tokenLogoutRoute = (0, import_zod_openapi8.createRoute)({
1066
1094
  body: {
1067
1095
  content: {
1068
1096
  "application/json": {
1069
- 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() })
1070
1098
  }
1071
1099
  }
1072
1100
  }
@@ -1086,7 +1114,7 @@ var tokenLogoutRoute = (0, import_zod_openapi8.createRoute)({
1086
1114
  }
1087
1115
  }
1088
1116
  });
1089
- var tokenMeRoute = (0, import_zod_openapi8.createRoute)({
1117
+ var tokenMeRoute = (0, import_zod_openapi9.createRoute)({
1090
1118
  method: "get",
1091
1119
  path: "/auth/me",
1092
1120
  tags: ["tokenAuth"],
@@ -1116,22 +1144,22 @@ var tokenAuthRoutes = {
1116
1144
  };
1117
1145
 
1118
1146
  // src/contracts/inviteAccept.ts
1119
- var import_zod_openapi10 = require("@hono/zod-openapi");
1147
+ var import_zod_openapi11 = require("@hono/zod-openapi");
1120
1148
 
1121
1149
  // src/schemas/inviteAccept.ts
1122
- var import_zod_openapi9 = require("@hono/zod-openapi");
1123
- var InviteAcceptRequestSchema = import_zod_openapi9.z.object({
1124
- token: import_zod_openapi9.z.string(),
1125
- username: import_zod_openapi9.z.string().min(1),
1126
- name: import_zod_openapi9.z.string().min(1),
1127
- 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)
1128
1156
  });
1129
- var InvitePreviewResponseSchema = import_zod_openapi9.z.object({
1130
- email: import_zod_openapi9.z.string().email()
1157
+ var InvitePreviewResponseSchema = import_zod_openapi10.z.object({
1158
+ email: import_zod_openapi10.z.string().email()
1131
1159
  });
1132
1160
 
1133
1161
  // src/contracts/inviteAccept.ts
1134
- var invitePreviewRoute = (0, import_zod_openapi10.createRoute)({
1162
+ var invitePreviewRoute = (0, import_zod_openapi11.createRoute)({
1135
1163
  method: "get",
1136
1164
  path: "/invite/accept",
1137
1165
  tags: ["inviteAccept"],
@@ -1158,7 +1186,7 @@ var invitePreviewRoute = (0, import_zod_openapi10.createRoute)({
1158
1186
  }
1159
1187
  }
1160
1188
  });
1161
- var acceptInviteRoute = (0, import_zod_openapi10.createRoute)({
1189
+ var acceptInviteRoute = (0, import_zod_openapi11.createRoute)({
1162
1190
  method: "post",
1163
1191
  path: "/invite/accept",
1164
1192
  tags: ["inviteAccept"],
@@ -1201,23 +1229,23 @@ var inviteAcceptRoutes = {
1201
1229
  };
1202
1230
 
1203
1231
  // src/contracts/passwordReset.ts
1204
- var import_zod_openapi12 = require("@hono/zod-openapi");
1232
+ var import_zod_openapi13 = require("@hono/zod-openapi");
1205
1233
 
1206
1234
  // src/schemas/passwordReset.ts
1207
- var import_zod_openapi11 = require("@hono/zod-openapi");
1208
- var ForgotPasswordRequestSchema = import_zod_openapi11.z.object({
1209
- 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()
1210
1238
  });
1211
- var ForgotPasswordResponseSchema = import_zod_openapi11.z.object({
1212
- ok: import_zod_openapi11.z.literal(true)
1239
+ var ForgotPasswordResponseSchema = import_zod_openapi12.z.object({
1240
+ ok: import_zod_openapi12.z.literal(true)
1213
1241
  });
1214
- var ResetPasswordRequestSchema = import_zod_openapi11.z.object({
1215
- token: import_zod_openapi11.z.string(),
1216
- 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)
1217
1245
  });
1218
1246
 
1219
1247
  // src/contracts/passwordReset.ts
1220
- var forgotPasswordRoute = (0, import_zod_openapi12.createRoute)({
1248
+ var forgotPasswordRoute = (0, import_zod_openapi13.createRoute)({
1221
1249
  method: "post",
1222
1250
  path: "/auth/forgot-password",
1223
1251
  tags: ["passwordReset"],
@@ -1242,7 +1270,7 @@ var forgotPasswordRoute = (0, import_zod_openapi12.createRoute)({
1242
1270
  }
1243
1271
  }
1244
1272
  });
1245
- var validateResetTokenRoute = (0, import_zod_openapi12.createRoute)({
1273
+ var validateResetTokenRoute = (0, import_zod_openapi13.createRoute)({
1246
1274
  method: "get",
1247
1275
  path: "/auth/reset-password",
1248
1276
  tags: ["passwordReset"],
@@ -1265,7 +1293,7 @@ var validateResetTokenRoute = (0, import_zod_openapi12.createRoute)({
1265
1293
  }
1266
1294
  }
1267
1295
  });
1268
- var selfResetPasswordRoute = (0, import_zod_openapi12.createRoute)({
1296
+ var selfResetPasswordRoute = (0, import_zod_openapi13.createRoute)({
1269
1297
  method: "post",
1270
1298
  path: "/auth/reset-password",
1271
1299
  tags: ["passwordReset"],
@@ -1305,19 +1333,19 @@ var passwordResetRoutes = {
1305
1333
  };
1306
1334
 
1307
1335
  // src/contracts/activation.ts
1308
- var import_zod_openapi14 = require("@hono/zod-openapi");
1336
+ var import_zod_openapi15 = require("@hono/zod-openapi");
1309
1337
 
1310
1338
  // src/schemas/activation.ts
1311
- var import_zod_openapi13 = require("@hono/zod-openapi");
1312
- var ActivateRequestSchema = import_zod_openapi13.z.object({
1313
- 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()
1314
1342
  });
1315
- var ActivateValidationResponseSchema = import_zod_openapi13.z.object({
1316
- ok: import_zod_openapi13.z.literal(true)
1343
+ var ActivateValidationResponseSchema = import_zod_openapi14.z.object({
1344
+ ok: import_zod_openapi14.z.literal(true)
1317
1345
  });
1318
1346
 
1319
1347
  // src/contracts/activation.ts
1320
- var validateActivationTokenRoute = (0, import_zod_openapi14.createRoute)({
1348
+ var validateActivationTokenRoute = (0, import_zod_openapi15.createRoute)({
1321
1349
  method: "get",
1322
1350
  path: "/auth/activate",
1323
1351
  tags: ["activation"],
@@ -1340,7 +1368,7 @@ var validateActivationTokenRoute = (0, import_zod_openapi14.createRoute)({
1340
1368
  }
1341
1369
  }
1342
1370
  });
1343
- var activateAccountRoute = (0, import_zod_openapi14.createRoute)({
1371
+ var activateAccountRoute = (0, import_zod_openapi15.createRoute)({
1344
1372
  method: "post",
1345
1373
  path: "/auth/activate",
1346
1374
  tags: ["activation"],
@@ -1375,21 +1403,21 @@ var activationRoutes = {
1375
1403
  };
1376
1404
 
1377
1405
  // src/contracts/emailChange.ts
1378
- var import_zod_openapi16 = require("@hono/zod-openapi");
1406
+ var import_zod_openapi17 = require("@hono/zod-openapi");
1379
1407
 
1380
1408
  // src/schemas/emailChange.ts
1381
- var import_zod_openapi15 = require("@hono/zod-openapi");
1382
- var ConfirmEmailChangeRequestSchema = import_zod_openapi15.z.object({
1383
- 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()
1384
1412
  });
1385
- var ConfirmEmailChangeResponseSchema = import_zod_openapi15.z.object({
1386
- ok: import_zod_openapi15.z.literal(true),
1413
+ var ConfirmEmailChangeResponseSchema = import_zod_openapi16.z.object({
1414
+ ok: import_zod_openapi16.z.literal(true),
1387
1415
  /** The newly-confirmed email address. */
1388
- email: import_zod_openapi15.z.string().email()
1416
+ email: import_zod_openapi16.z.string().email()
1389
1417
  });
1390
1418
 
1391
1419
  // src/contracts/emailChange.ts
1392
- var validateEmailChangeTokenRoute = (0, import_zod_openapi16.createRoute)({
1420
+ var validateEmailChangeTokenRoute = (0, import_zod_openapi17.createRoute)({
1393
1421
  method: "get",
1394
1422
  path: "/auth/confirm-email-change",
1395
1423
  tags: ["emailChange"],
@@ -1412,7 +1440,7 @@ var validateEmailChangeTokenRoute = (0, import_zod_openapi16.createRoute)({
1412
1440
  }
1413
1441
  }
1414
1442
  });
1415
- var confirmEmailChangeRoute = (0, import_zod_openapi16.createRoute)({
1443
+ var confirmEmailChangeRoute = (0, import_zod_openapi17.createRoute)({
1416
1444
  method: "post",
1417
1445
  path: "/auth/confirm-email-change",
1418
1446
  tags: ["emailChange"],
@@ -1451,19 +1479,19 @@ var emailChangeRoutes = {
1451
1479
  };
1452
1480
 
1453
1481
  // src/contracts/me.ts
1454
- var import_zod_openapi21 = require("@hono/zod-openapi");
1482
+ var import_zod_openapi22 = require("@hono/zod-openapi");
1455
1483
 
1456
1484
  // src/schemas/me.ts
1457
- var import_zod_openapi20 = require("@hono/zod-openapi");
1485
+ var import_zod_openapi21 = require("@hono/zod-openapi");
1458
1486
 
1459
1487
  // src/schemas/page.ts
1460
- var import_zod_openapi19 = require("@hono/zod-openapi");
1488
+ var import_zod_openapi20 = require("@hono/zod-openapi");
1461
1489
 
1462
1490
  // src/schemas/collab.ts
1463
- var import_zod_openapi18 = require("@hono/zod-openapi");
1491
+ var import_zod_openapi19 = require("@hono/zod-openapi");
1464
1492
 
1465
1493
  // src/schemas/userPublic.ts
1466
- var import_zod_openapi17 = require("@hono/zod-openapi");
1494
+ var import_zod_openapi18 = require("@hono/zod-openapi");
1467
1495
  var UserPublicStatus = {
1468
1496
  REGISTERED: 1,
1469
1497
  ACTIVE: 2,
@@ -1471,64 +1499,64 @@ var UserPublicStatus = {
1471
1499
  DELETED: 4,
1472
1500
  INVITED: 5
1473
1501
  };
1474
- var UserPublicStatusSchema = import_zod_openapi17.z.nativeEnum(UserPublicStatus);
1475
- var UserPublicSchema = import_zod_openapi17.z.object({
1476
- _id: import_zod_openapi17.z.string(),
1477
- 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(),
1478
1506
  // for compatibility (virtual field)
1479
- username: import_zod_openapi17.z.string(),
1480
- name: import_zod_openapi17.z.string(),
1481
- email: import_zod_openapi17.z.string().email(),
1482
- image: import_zod_openapi17.z.string().nullable().optional(),
1483
- introduction: import_zod_openapi17.z.string().optional(),
1484
- createdAt: import_zod_openapi17.z.string(),
1485
- 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(),
1486
1514
  status: UserPublicStatusSchema.optional()
1487
1515
  });
1488
1516
 
1489
1517
  // src/schemas/collab.ts
1490
1518
  var ContributorRefSchema = UserPublicSchema;
1491
- var RevisionTypeSchema = import_zod_openapi18.z.enum(["snapshot", "incremental"]);
1492
- var WsTokenResponseSchema = import_zod_openapi18.z.object({
1493
- wsToken: import_zod_openapi18.z.string(),
1494
- pageId: import_zod_openapi18.z.string(),
1495
- expiresAt: import_zod_openapi18.z.string(),
1496
- readonly: import_zod_openapi18.z.boolean()
1497
- });
1498
- var WsTokenPayloadSchema = import_zod_openapi18.z.object({
1499
- userId: import_zod_openapi18.z.string(),
1500
- pageId: import_zod_openapi18.z.string(),
1501
- readonly: import_zod_openapi18.z.boolean(),
1502
- iat: import_zod_openapi18.z.number().int(),
1503
- exp: import_zod_openapi18.z.number().int()
1504
- });
1505
- var CollabSaveMessageSchema = import_zod_openapi18.z.object({
1506
- kind: import_zod_openapi18.z.literal("crowi:save"),
1507
- message: import_zod_openapi18.z.string().optional()
1508
- });
1509
- var CollabSaveOkSchema = import_zod_openapi18.z.object({
1510
- kind: import_zod_openapi18.z.literal("crowi:save-ok"),
1511
- revisionId: import_zod_openapi18.z.string()
1512
- });
1513
- var CollabSaveErrorSchema = import_zod_openapi18.z.object({
1514
- kind: import_zod_openapi18.z.literal("crowi:save-error"),
1515
- code: import_zod_openapi18.z.string(),
1516
- message: import_zod_openapi18.z.string()
1517
- });
1518
- var CollabForceReloadMessageSchema = import_zod_openapi18.z.object({
1519
- kind: import_zod_openapi18.z.literal("crowi:force-reload"),
1520
- 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()
1521
1549
  });
1522
1550
 
1523
1551
  // src/schemas/page.ts
1524
- 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));
1525
1553
  var PageGrantEnum = {
1526
1554
  PUBLIC: 1,
1527
1555
  RESTRICTED: 2,
1528
1556
  SPECIFIED: 3,
1529
1557
  OWNER: 4
1530
1558
  };
1531
- 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"]);
1532
1560
  var PageStatusEnum = {
1533
1561
  WIP: "wip",
1534
1562
  PUBLISHED: "published",
@@ -1536,51 +1564,51 @@ var PageStatusEnum = {
1536
1564
  DEPRECATED: "deprecated",
1537
1565
  DRAFT: "draft"
1538
1566
  };
1539
- var PageTypeSchema = import_zod_openapi19.z.enum(["portal", "user", "public"]);
1567
+ var PageTypeSchema = import_zod_openapi20.z.enum(["portal", "user", "public"]);
1540
1568
  var PageTypeEnum = {
1541
1569
  PORTAL: "portal",
1542
1570
  USER: "user",
1543
1571
  PUBLIC: "public"
1544
1572
  };
1545
- var PageUserSchema = import_zod_openapi19.z.object({
1546
- _id: import_zod_openapi19.z.string(),
1547
- 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(),
1548
1576
  // for compatibility
1549
- username: import_zod_openapi19.z.string(),
1550
- name: import_zod_openapi19.z.string(),
1551
- email: import_zod_openapi19.z.string().email(),
1552
- image: import_zod_openapi19.z.string().nullable().optional(),
1553
- createdAt: import_zod_openapi19.z.string()
1554
- });
1555
- var TocEntrySchema = import_zod_openapi19.z.object({
1556
- level: import_zod_openapi19.z.number().int().min(1).max(6),
1557
- text: import_zod_openapi19.z.string(),
1558
- anchorId: import_zod_openapi19.z.string()
1559
- });
1560
- 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({
1561
1589
  /** Verbatim source between the `[[` `]]` (no surrounding brackets). */
1562
- raw: import_zod_openapi19.z.string(),
1590
+ raw: import_zod_openapi20.z.string(),
1563
1591
  /** Normalised target (left of the `|`, fragment trimmed for resolution). */
1564
- target: import_zod_openapi19.z.string(),
1592
+ target: import_zod_openapi20.z.string(),
1565
1593
  /** Optional pipe-aliased display text (right of the `|`). */
1566
- displayText: import_zod_openapi19.z.string().optional()
1567
- });
1568
- var MentionSchema = import_zod_openapi19.z.object({
1569
- username: import_zod_openapi19.z.string()
1570
- });
1571
- var RevisionMetaSchemaShape = import_zod_openapi19.z.object({
1572
- toc: import_zod_openapi19.z.array(TocEntrySchema).optional(),
1573
- wikiLinks: import_zod_openapi19.z.array(WikiLinkSchema).optional(),
1574
- mentions: import_zod_openapi19.z.array(MentionSchema).optional(),
1575
- codeBlockLanguages: import_zod_openapi19.z.array(import_zod_openapi19.z.string()).optional()
1576
- });
1577
- var RevisionSchema = import_zod_openapi19.z.object({
1578
- _id: import_zod_openapi19.z.string(),
1579
- path: import_zod_openapi19.z.string(),
1580
- body: import_zod_openapi19.z.string(),
1581
- 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"),
1582
1610
  author: PageUserSchema.nullable().optional(),
1583
- createdAt: import_zod_openapi19.z.string(),
1611
+ createdAt: import_zod_openapi20.z.string(),
1584
1612
  meta: RevisionMetaSchemaShape.optional(),
1585
1613
  // RFC-0002 Phase 3: transformed mdast (parse + core plugins +
1586
1614
  // shiki) for the web client to render without re-parsing the body.
@@ -1588,42 +1616,42 @@ var RevisionSchema = import_zod_openapi19.z.object({
1588
1616
  // spec to maintain a strict Zod schema for. Only single-page detail
1589
1617
  // (`getPage`) and single-revision detail (`getRevision`) emit it;
1590
1618
  // list endpoints skip it for payload weight.
1591
- renderedAst: import_zod_openapi19.z.unknown().optional(),
1619
+ renderedAst: import_zod_openapi20.z.unknown().optional(),
1592
1620
  // RFC-0002 round 3.1: semver of the renderer pipeline that produced
1593
1621
  // `renderedAst`. The read path uses this to detect stale entries
1594
1622
  // (rebuilt by `renderer:rebuild` once RFC-0008 lands). Absent on
1595
1623
  // revisions saved before this field was introduced.
1596
- rendererVersion: import_zod_openapi19.z.string().optional(),
1624
+ rendererVersion: import_zod_openapi20.z.string().optional(),
1597
1625
  // RFC-0003 collaborative-save fields. All optional; v1.x revisions
1598
1626
  // emit none of them. See `packages/api/src/models/revision.ts` for
1599
1627
  // semantics. The list-page endpoint currently does not surface
1600
1628
  // these — they only appear on the Phase 5+ checkpoint Revisions
1601
1629
  // produced by Hocuspocus and on the single-revision detail route.
1602
- parentRevisionId: import_zod_openapi19.z.string().nullable().optional(),
1630
+ parentRevisionId: import_zod_openapi20.z.string().nullable().optional(),
1603
1631
  type: RevisionTypeSchema.optional(),
1604
- savedBy: import_zod_openapi19.z.union([import_zod_openapi19.z.string(), PageUserSchema]).nullable().optional(),
1605
- contributors: import_zod_openapi19.z.array(import_zod_openapi19.z.union([import_zod_openapi19.z.string(), PageUserSchema])).optional(),
1606
- 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(),
1607
1635
  // RFC-0010 — edit channel ('web' | 'oauth' | 'pat'); absent on
1608
1636
  // pre-RFC-0010 / collaborative / browser revisions.
1609
- editVia: import_zod_openapi19.z.enum(["web", "oauth", "pat"]).optional()
1610
- });
1611
- var PageExtendedSchema = import_zod_openapi19.z.record(import_zod_openapi19.z.string(), import_zod_openapi19.z.any()).optional();
1612
- var PageSchema = import_zod_openapi19.z.object({
1613
- _id: import_zod_openapi19.z.string(),
1614
- path: import_zod_openapi19.z.string(),
1615
- revision: import_zod_openapi19.z.union([import_zod_openapi19.z.string(), RevisionSchema]).optional(),
1616
- 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(),
1617
1645
  status: PageStatusSchema.nullable().optional(),
1618
- grant: import_zod_openapi19.z.number().optional(),
1619
- grantedUsers: import_zod_openapi19.z.array(import_zod_openapi19.z.string()).optional(),
1620
- creator: import_zod_openapi19.z.union([import_zod_openapi19.z.string(), PageUserSchema]).nullable().optional(),
1621
- lastUpdateUser: import_zod_openapi19.z.union([import_zod_openapi19.z.string(), PageUserSchema]).nullable().optional(),
1622
- liker: import_zod_openapi19.z.array(import_zod_openapi19.z.string()).optional(),
1623
- 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),
1624
1652
  extended: PageExtendedSchema,
1625
- createdAt: import_zod_openapi19.z.string(),
1626
- updatedAt: import_zod_openapi19.z.string().optional(),
1653
+ createdAt: import_zod_openapi20.z.string(),
1654
+ updatedAt: import_zod_openapi20.z.string().optional(),
1627
1655
  // RFC-0003 collaborative-edit fields. All optional; `null` is the
1628
1656
  // "no live state yet" value. Existing read endpoints (list /
1629
1657
  // detail) do not currently emit these — the contract is widened
@@ -1631,31 +1659,32 @@ var PageSchema = import_zod_openapi19.z.object({
1631
1659
  // bump. `yjsState` is intentionally omitted from the contract:
1632
1660
  // the binary blob lives only inside Hocuspocus and never crosses
1633
1661
  // the HTTP API.
1634
- currentRevision: import_zod_openapi19.z.string().nullable().optional(),
1635
- 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(),
1636
1664
  // dynamic fields
1637
- latestRevision: import_zod_openapi19.z.string().optional(),
1638
- likerCount: import_zod_openapi19.z.number().optional(),
1639
- 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()
1640
1668
  });
1641
1669
  var PageWithRevisionSchema = PageSchema.extend({
1642
1670
  revision: RevisionSchema,
1643
1671
  creator: PageUserSchema.nullable().optional(),
1644
1672
  lastUpdateUser: PageUserSchema.nullable().optional()
1645
1673
  });
1646
- var GetPageRequestSchema = import_zod_openapi19.z.object({
1647
- path: import_zod_openapi19.z.string().optional(),
1648
- page_id: import_zod_openapi19.z.string().optional(),
1649
- 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()
1650
1678
  });
1651
- var GetPageResponseSchema = import_zod_openapi19.z.object({
1679
+ var GetPageResponseSchema = import_zod_openapi20.z.object({
1652
1680
  page: PageWithRevisionSchema
1653
1681
  });
1654
- var ListPagesRequestSchema = import_zod_openapi19.z.object({
1655
- path: import_zod_openapi19.z.string().optional(),
1656
- user: import_zod_openapi19.z.string().optional(),
1657
- limit: import_zod_openapi19.z.coerce.number().optional().default(50),
1658
- 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),
1659
1688
  // NOT `z.coerce.boolean()`: that uses JS `Boolean(v)`, so the string
1660
1689
  // `"false"` (which is how the web client serialises `false` on the
1661
1690
  // query string) coerces to `true`. That silently flipped
@@ -1663,25 +1692,25 @@ var ListPagesRequestSchema = import_zod_openapi19.z.object({
1663
1692
  // filter and leak other users' drafts. Parse the string explicitly so
1664
1693
  // only `"true"` / `true` is truthy; anything else (incl. `"false"`,
1665
1694
  // absent) is `false`.
1666
- 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),
1667
1696
  // Sort field + direction for the listing. Defaults preserve the legacy
1668
1697
  // "newest-updated first" order so existing callers are unaffected.
1669
1698
  // `path` sorts alphabetically by full page path (≈ name order).
1670
- sort: import_zod_openapi19.z.enum(["updatedAt", "createdAt", "path"]).optional().default("updatedAt"),
1671
- 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"),
1672
1701
  // When listing a portal path (`/foo/`), open the portal document at this
1673
1702
  // past revision so the catch-all can mirror `?revision_id=` on portals.
1674
1703
  // Only the `portalPage` is rewound — the child rows always reflect the
1675
1704
  // latest. Absent for normal listings.
1676
- revision_id: import_zod_openapi19.z.string().optional()
1705
+ revision_id: import_zod_openapi20.z.string().optional()
1677
1706
  });
1678
- var PagerSchema = import_zod_openapi19.z.object({
1679
- prev: import_zod_openapi19.z.number().nullable(),
1680
- next: import_zod_openapi19.z.number().nullable(),
1681
- 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()
1682
1711
  });
1683
- var ListPagesResponseSchema = import_zod_openapi19.z.object({
1684
- pages: import_zod_openapi19.z.array(PageSchema),
1712
+ var ListPagesResponseSchema = import_zod_openapi20.z.object({
1713
+ pages: import_zod_openapi20.z.array(PageSchema),
1685
1714
  pager: PagerSchema,
1686
1715
  portalPage: PageSchema.nullable().optional(),
1687
1716
  // When listing a portal path (`/foo/`) that has NO portal document of
@@ -1693,208 +1722,208 @@ var ListPagesResponseSchema = import_zod_openapi19.z.object({
1693
1722
  // listings.
1694
1723
  contentPage: PageSchema.nullable().optional()
1695
1724
  });
1696
- var PageChildSegmentSchema = import_zod_openapi19.z.object({
1725
+ var PageChildSegmentSchema = import_zod_openapi20.z.object({
1697
1726
  // The bare segment name immediately under the queried path
1698
1727
  // (e.g. 'rfc' for /crowi/rfc/... when querying /crowi/).
1699
- segment: import_zod_openapi19.z.string(),
1728
+ segment: import_zod_openapi20.z.string(),
1700
1729
  // Portal-style path for this segment (always trailing-slashed),
1701
1730
  // e.g. '/crowi/rfc/'. Drop the trailing slash for the page path when
1702
1731
  // the segment is a leaf page (see `isPage`).
1703
- path: import_zod_openapi19.z.string(),
1732
+ path: import_zod_openapi20.z.string(),
1704
1733
  // True when a real page is saved at the segment path itself
1705
1734
  // (e.g. `/crowi/rfc`, no trailing slash) — i.e. the segment is a
1706
1735
  // navigable page, not only an inferred directory.
1707
- isPage: import_zod_openapi19.z.boolean(),
1736
+ isPage: import_zod_openapi20.z.boolean(),
1708
1737
  // True when a real portal page is saved at `path` (→ compass icon).
1709
- hasPortal: import_zod_openapi19.z.boolean(),
1738
+ hasPortal: import_zod_openapi20.z.boolean(),
1710
1739
  // Number of descendant content pages strictly under this segment
1711
1740
  // (excludes the segment's own page / portal docs). A rough "how much
1712
1741
  // lives here" hint; > 0 means the segment is an expandable directory.
1713
- count: import_zod_openapi19.z.number()
1742
+ count: import_zod_openapi20.z.number()
1714
1743
  });
1715
- var ListPageChildrenRequestSchema = import_zod_openapi19.z.object({
1744
+ var ListPageChildrenRequestSchema = import_zod_openapi20.z.object({
1716
1745
  // Portal path to list children of. Trailing slash optional — the
1717
1746
  // handler normalises it. '/' lists the top-level segments.
1718
- path: import_zod_openapi19.z.string()
1747
+ path: import_zod_openapi20.z.string()
1719
1748
  });
1720
- var ListPageChildrenResponseSchema = import_zod_openapi19.z.object({
1749
+ var ListPageChildrenResponseSchema = import_zod_openapi20.z.object({
1721
1750
  // Sorted alphabetically by segment.
1722
- children: import_zod_openapi19.z.array(PageChildSegmentSchema)
1723
- });
1724
- var CreatePageRequestSchema = import_zod_openapi19.z.object({
1725
- path: import_zod_openapi19.z.string(),
1726
- body: import_zod_openapi19.z.string(),
1727
- grant: import_zod_openapi19.z.number().optional()
1728
- });
1729
- var UpdatePageRequestSchema = import_zod_openapi19.z.object({
1730
- page_id: import_zod_openapi19.z.string(),
1731
- body: import_zod_openapi19.z.string(),
1732
- revision_id: import_zod_openapi19.z.string().optional(),
1733
- grant: import_zod_openapi19.z.number().optional()
1734
- });
1735
- var RevertToRevisionRequestSchema = import_zod_openapi19.z.object({
1736
- page_id: import_zod_openapi19.z.string(),
1737
- revision_id: import_zod_openapi19.z.string()
1738
- });
1739
- var SetPageGrantRequestSchema = import_zod_openapi19.z.object({
1740
- page_id: import_zod_openapi19.z.string(),
1741
- grant: import_zod_openapi19.z.number().int()
1742
- });
1743
- var RenamePageRequestSchema = import_zod_openapi19.z.object({
1744
- page_id: import_zod_openapi19.z.string(),
1745
- new_path: import_zod_openapi19.z.string(),
1746
- revision_id: import_zod_openapi19.z.string().optional(),
1747
- 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(),
1748
1777
  // When true, rename the page together with its whole (grant-visible)
1749
1778
  // descendant subtree (renameTree) instead of just the single page.
1750
1779
  // Defaults to false — the single-page rename behaviour.
1751
- include_descendants: import_zod_openapi19.z.boolean().optional()
1780
+ include_descendants: import_zod_openapi20.z.boolean().optional()
1752
1781
  });
1753
- var RenamePageResponseSchema = import_zod_openapi19.z.object({
1782
+ var RenamePageResponseSchema = import_zod_openapi20.z.object({
1754
1783
  page: PageSchema,
1755
- renamed_count: import_zod_openapi19.z.number()
1756
- });
1757
- var RenameTreeErrorSchema = import_zod_openapi19.z.object({
1758
- error: import_zod_openapi19.z.object({
1759
- code: import_zod_openapi19.z.literal("PAGE_RENAME_TREE_FAILED"),
1760
- message: import_zod_openapi19.z.string(),
1761
- conflicts: import_zod_openapi19.z.array(
1762
- import_zod_openapi19.z.object({
1763
- path: import_zod_openapi19.z.string(),
1764
- 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())
1765
1794
  })
1766
1795
  ),
1767
1796
  // True when the failure happened after some pages were already moved
1768
1797
  // (non-transactional best-effort). When omitted/false the failure was
1769
1798
  // detected up-front and nothing was moved.
1770
- partial: import_zod_openapi19.z.boolean().optional()
1799
+ partial: import_zod_openapi20.z.boolean().optional()
1771
1800
  })
1772
1801
  });
1773
- var RenameSubtreeRequestSchema = import_zod_openapi19.z.object({
1774
- old_path: import_zod_openapi19.z.string(),
1775
- new_path: import_zod_openapi19.z.string(),
1776
- 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()
1777
1806
  });
1778
- var RenameSubtreeResponseSchema = import_zod_openapi19.z.object({
1779
- renamed_count: import_zod_openapi19.z.number()
1807
+ var RenameSubtreeResponseSchema = import_zod_openapi20.z.object({
1808
+ renamed_count: import_zod_openapi20.z.number()
1780
1809
  });
1781
- var PageNotFoundErrorSchema = import_zod_openapi19.z.object({
1782
- error: import_zod_openapi19.z.object({
1783
- code: import_zod_openapi19.z.literal("PAGE_NOT_FOUND"),
1784
- 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")
1785
1814
  })
1786
1815
  });
1787
- var PageNotGrantedErrorSchema = import_zod_openapi19.z.object({
1788
- error: import_zod_openapi19.z.object({
1789
- code: import_zod_openapi19.z.literal("PAGE_NOT_GRANTED"),
1790
- 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")
1791
1820
  })
1792
1821
  });
1793
- var PageRevisionErrorSchema = import_zod_openapi19.z.object({
1794
- error: import_zod_openapi19.z.object({
1795
- code: import_zod_openapi19.z.literal("PAGE_REVISION_ERROR"),
1796
- 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()
1797
1826
  })
1798
1827
  });
1799
- var SeenPageRequestSchema = import_zod_openapi19.z.object({
1800
- page_id: import_zod_openapi19.z.string()
1828
+ var SeenPageRequestSchema = import_zod_openapi20.z.object({
1829
+ page_id: import_zod_openapi20.z.string()
1801
1830
  });
1802
- var SeenUsersResponseSchema = import_zod_openapi19.z.object({
1803
- seenUsers: import_zod_openapi19.z.array(UserPublicSchema),
1804
- 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()
1805
1834
  });
1806
- var GetSeenUsersRequestSchema = import_zod_openapi19.z.object({
1807
- page_id: import_zod_openapi19.z.string(),
1835
+ var GetSeenUsersRequestSchema = import_zod_openapi20.z.object({
1836
+ page_id: import_zod_openapi20.z.string(),
1808
1837
  // Optional cap on returned `seenUsers`. `seenUsersCount` always reflects
1809
1838
  // the full count regardless of `limit`. Omit for the full list.
1810
- limit: import_zod_openapi19.z.coerce.number().int().positive().optional()
1839
+ limit: import_zod_openapi20.z.coerce.number().int().positive().optional()
1811
1840
  });
1812
- var GetWatchStatusRequestSchema = import_zod_openapi19.z.object({
1813
- page_id: import_zod_openapi19.z.string()
1841
+ var GetWatchStatusRequestSchema = import_zod_openapi20.z.object({
1842
+ page_id: import_zod_openapi20.z.string()
1814
1843
  });
1815
- var WatchStatusResponseSchema = import_zod_openapi19.z.object({
1816
- watching: import_zod_openapi19.z.boolean()
1844
+ var WatchStatusResponseSchema = import_zod_openapi20.z.object({
1845
+ watching: import_zod_openapi20.z.boolean()
1817
1846
  });
1818
- var SetWatchStatusRequestSchema = import_zod_openapi19.z.object({
1819
- page_id: import_zod_openapi19.z.string(),
1820
- 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()
1821
1850
  });
1822
1851
 
1823
1852
  // src/schemas/me.ts
1824
- var LanguageSchema = import_zod_openapi20.z.enum(["en", "ja"]);
1825
- var ThemeSchema = import_zod_openapi20.z.enum(["system", "light", "dark"]);
1826
- var UserProfileResponseSchema = import_zod_openapi20.z.object({
1827
- id: import_zod_openapi20.z.string(),
1828
- username: import_zod_openapi20.z.string(),
1829
- name: import_zod_openapi20.z.string(),
1830
- 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(),
1831
1860
  lang: LanguageSchema,
1832
1861
  theme: ThemeSchema,
1833
- image: import_zod_openapi20.z.string().nullable(),
1834
- introduction: import_zod_openapi20.z.string().optional(),
1835
- hasPassword: import_zod_openapi20.z.boolean(),
1836
- 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(),
1837
1866
  /**
1838
1867
  * True when the profile update requested a new email that is awaiting
1839
1868
  * confirmation: the stored `email` is unchanged and a confirmation
1840
1869
  * link was sent to the new address.
1841
1870
  */
1842
- emailChangePending: import_zod_openapi20.z.boolean().optional()
1871
+ emailChangePending: import_zod_openapi21.z.boolean().optional()
1843
1872
  });
1844
- var UpdateProfileRequestSchema = import_zod_openapi20.z.object({
1845
- userForm: import_zod_openapi20.z.object({
1846
- name: import_zod_openapi20.z.string().min(1, "Name is required"),
1847
- 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"),
1848
1877
  lang: LanguageSchema
1849
1878
  })
1850
1879
  });
1851
- var UpdateThemeRequestSchema = import_zod_openapi20.z.object({
1880
+ var UpdateThemeRequestSchema = import_zod_openapi21.z.object({
1852
1881
  theme: ThemeSchema
1853
1882
  });
1854
- var ThemeUpdateResponseSchema = import_zod_openapi20.z.object({
1855
- status: import_zod_openapi20.z.literal("ok"),
1883
+ var ThemeUpdateResponseSchema = import_zod_openapi21.z.object({
1884
+ status: import_zod_openapi21.z.literal("ok"),
1856
1885
  theme: ThemeSchema
1857
1886
  });
1858
- var PictureUploadResponseSchema = import_zod_openapi20.z.object({
1859
- status: import_zod_openapi20.z.boolean(),
1860
- url: import_zod_openapi20.z.string().optional(),
1861
- 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()
1862
1891
  });
1863
- var SuccessResponseSchema = import_zod_openapi20.z.object({
1864
- status: import_zod_openapi20.z.literal("ok"),
1865
- 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()
1866
1895
  });
1867
- var ProfileErrorResponseSchema = import_zod_openapi20.z.object({
1868
- status: import_zod_openapi20.z.literal("error"),
1896
+ var ProfileErrorResponseSchema = import_zod_openapi21.z.object({
1897
+ status: import_zod_openapi21.z.literal("error"),
1869
1898
  /** Stable code so the web can localize the message (e.g. EMAIL_TAKEN). */
1870
- code: import_zod_openapi20.z.string().optional(),
1871
- message: import_zod_openapi20.z.string().optional(),
1872
- 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()
1873
1902
  });
1874
1903
  var PASSWORD_REGEX = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?`~])[a-zA-Z\d!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?`~]+$/;
1875
- var UpdatePasswordRequestSchema = import_zod_openapi20.z.object({
1876
- oldPassword: import_zod_openapi20.z.string().optional(),
1877
- 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"),
1878
- 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()
1879
1908
  }).refine((data) => data.newPassword === data.newPasswordConfirm, {
1880
1909
  message: "Passwords do not match",
1881
1910
  path: ["newPasswordConfirm"]
1882
1911
  });
1883
- var PasswordUpdateSuccessSchema = import_zod_openapi20.z.object({
1884
- status: import_zod_openapi20.z.literal("ok"),
1885
- 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()
1886
1915
  });
1887
- var PasswordErrorResponseSchema = import_zod_openapi20.z.object({
1888
- status: import_zod_openapi20.z.literal("error"),
1889
- message: import_zod_openapi20.z.string(),
1890
- 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()
1891
1920
  });
1892
- var RecentlyViewedPagesResponseSchema = import_zod_openapi20.z.object({
1893
- pages: import_zod_openapi20.z.array(PageSchema)
1921
+ var RecentlyViewedPagesResponseSchema = import_zod_openapi21.z.object({
1922
+ pages: import_zod_openapi21.z.array(PageSchema)
1894
1923
  });
1895
1924
 
1896
1925
  // src/contracts/me.ts
1897
- var getProfileRoute = (0, import_zod_openapi21.createRoute)({
1926
+ var getProfileRoute = (0, import_zod_openapi22.createRoute)({
1898
1927
  method: "get",
1899
1928
  path: "/me",
1900
1929
  tags: ["me"],
@@ -1911,7 +1940,7 @@ var getProfileRoute = (0, import_zod_openapi21.createRoute)({
1911
1940
  }
1912
1941
  }
1913
1942
  });
1914
- var updateProfileRoute = (0, import_zod_openapi21.createRoute)({
1943
+ var updateProfileRoute = (0, import_zod_openapi22.createRoute)({
1915
1944
  method: "put",
1916
1945
  path: "/me",
1917
1946
  tags: ["me"],
@@ -1937,7 +1966,7 @@ var updateProfileRoute = (0, import_zod_openapi21.createRoute)({
1937
1966
  }
1938
1967
  }
1939
1968
  });
1940
- var updateThemeRoute = (0, import_zod_openapi21.createRoute)({
1969
+ var updateThemeRoute = (0, import_zod_openapi22.createRoute)({
1941
1970
  method: "patch",
1942
1971
  path: "/me/theme",
1943
1972
  tags: ["me"],
@@ -1963,7 +1992,7 @@ var updateThemeRoute = (0, import_zod_openapi21.createRoute)({
1963
1992
  }
1964
1993
  }
1965
1994
  });
1966
- var uploadPictureRoute = (0, import_zod_openapi21.createRoute)({
1995
+ var uploadPictureRoute = (0, import_zod_openapi22.createRoute)({
1967
1996
  method: "post",
1968
1997
  path: "/me/picture",
1969
1998
  tags: ["me"],
@@ -1973,8 +2002,8 @@ var uploadPictureRoute = (0, import_zod_openapi21.createRoute)({
1973
2002
  body: {
1974
2003
  content: {
1975
2004
  "multipart/form-data": {
1976
- schema: import_zod_openapi21.z.object({
1977
- 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")
1978
2007
  })
1979
2008
  }
1980
2009
  }
@@ -1995,7 +2024,7 @@ var uploadPictureRoute = (0, import_zod_openapi21.createRoute)({
1995
2024
  }
1996
2025
  }
1997
2026
  });
1998
- var deletePictureRoute = (0, import_zod_openapi21.createRoute)({
2027
+ var deletePictureRoute = (0, import_zod_openapi22.createRoute)({
1999
2028
  method: "delete",
2000
2029
  path: "/me/picture",
2001
2030
  tags: ["me"],
@@ -2016,7 +2045,7 @@ var deletePictureRoute = (0, import_zod_openapi21.createRoute)({
2016
2045
  }
2017
2046
  }
2018
2047
  });
2019
- var updatePasswordRoute = (0, import_zod_openapi21.createRoute)({
2048
+ var updatePasswordRoute = (0, import_zod_openapi22.createRoute)({
2020
2049
  method: "put",
2021
2050
  path: "/me/password",
2022
2051
  tags: ["me"],
@@ -2042,7 +2071,7 @@ var updatePasswordRoute = (0, import_zod_openapi21.createRoute)({
2042
2071
  }
2043
2072
  }
2044
2073
  });
2045
- var recentlyViewedPagesRoute = (0, import_zod_openapi21.createRoute)({
2074
+ var recentlyViewedPagesRoute = (0, import_zod_openapi22.createRoute)({
2046
2075
  method: "get",
2047
2076
  path: "/me/recently-viewed-pages",
2048
2077
  tags: ["me"],
@@ -2074,43 +2103,43 @@ var meRoutes = {
2074
2103
  };
2075
2104
 
2076
2105
  // src/contracts/access-token.ts
2077
- var import_zod_openapi23 = require("@hono/zod-openapi");
2106
+ var import_zod_openapi24 = require("@hono/zod-openapi");
2078
2107
 
2079
2108
  // src/schemas/access-token.ts
2080
- var import_zod_openapi22 = require("@hono/zod-openapi");
2081
- var AccessTokenSchema = import_zod_openapi22.z.object({
2082
- id: import_zod_openapi22.z.string(),
2083
- name: import_zod_openapi22.z.string(),
2084
- 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()),
2085
2114
  /** ISO-8601 expiry, or `null` for a non-expiring token. */
2086
- expiresAt: import_zod_openapi22.z.string().nullable(),
2115
+ expiresAt: import_zod_openapi23.z.string().nullable(),
2087
2116
  /** ISO-8601 of last successful use, or `null` if never used. */
2088
- lastUsedAt: import_zod_openapi22.z.string().nullable(),
2089
- createdAt: import_zod_openapi22.z.string()
2117
+ lastUsedAt: import_zod_openapi23.z.string().nullable(),
2118
+ createdAt: import_zod_openapi23.z.string()
2090
2119
  });
2091
- var ListAccessTokensResponseSchema = import_zod_openapi22.z.object({
2092
- accessTokens: import_zod_openapi22.z.array(AccessTokenSchema)
2120
+ var ListAccessTokensResponseSchema = import_zod_openapi23.z.object({
2121
+ accessTokens: import_zod_openapi23.z.array(AccessTokenSchema)
2093
2122
  });
2094
- var CreateAccessTokenRequestSchema = import_zod_openapi22.z.object({
2095
- name: import_zod_openapi22.z.string().min(1, "Name is required").max(200),
2096
- scopes: import_zod_openapi22.z.array(import_zod_openapi22.z.string()).min(1, "At least one scope is required"),
2097
- 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()
2098
2127
  });
2099
2128
  var CreateAccessTokenResponseSchema = AccessTokenSchema.extend({
2100
- token: import_zod_openapi22.z.string()
2101
- });
2102
- var InvalidScopeErrorSchema = import_zod_openapi22.z.object({
2103
- error: import_zod_openapi22.z.object({
2104
- code: import_zod_openapi22.z.literal("INVALID_SCOPE"),
2105
- message: import_zod_openapi22.z.string(),
2106
- details: import_zod_openapi22.z.object({
2107
- 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())
2108
2137
  }).optional()
2109
2138
  })
2110
2139
  });
2111
2140
 
2112
2141
  // src/contracts/access-token.ts
2113
- var listAccessTokensRoute = (0, import_zod_openapi23.createRoute)({
2142
+ var listAccessTokensRoute = (0, import_zod_openapi24.createRoute)({
2114
2143
  method: "get",
2115
2144
  path: "/me/access-tokens",
2116
2145
  tags: ["me"],
@@ -2135,7 +2164,7 @@ var listAccessTokensRoute = (0, import_zod_openapi23.createRoute)({
2135
2164
  }
2136
2165
  }
2137
2166
  });
2138
- var createAccessTokenRoute = (0, import_zod_openapi23.createRoute)({
2167
+ var createAccessTokenRoute = (0, import_zod_openapi24.createRoute)({
2139
2168
  method: "post",
2140
2169
  path: "/me/access-tokens",
2141
2170
  tags: ["me"],
@@ -2169,14 +2198,14 @@ var createAccessTokenRoute = (0, import_zod_openapi23.createRoute)({
2169
2198
  }
2170
2199
  }
2171
2200
  });
2172
- var deleteAccessTokenRoute = (0, import_zod_openapi23.createRoute)({
2201
+ var deleteAccessTokenRoute = (0, import_zod_openapi24.createRoute)({
2173
2202
  method: "delete",
2174
2203
  path: "/me/access-tokens/{id}",
2175
2204
  tags: ["me"],
2176
2205
  security: [{ bearerAuth: [] }],
2177
2206
  summary: "Revoke a personal access token",
2178
2207
  request: {
2179
- 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() })
2180
2209
  },
2181
2210
  responses: {
2182
2211
  200: {
@@ -2208,13 +2237,13 @@ var accessTokenRoutes = {
2208
2237
  };
2209
2238
 
2210
2239
  // src/contracts/oauth.ts
2211
- var import_zod_openapi26 = require("@hono/zod-openapi");
2240
+ var import_zod_openapi27 = require("@hono/zod-openapi");
2212
2241
 
2213
2242
  // src/schemas/oauth-endpoints.ts
2214
- var import_zod_openapi25 = require("@hono/zod-openapi");
2243
+ var import_zod_openapi26 = require("@hono/zod-openapi");
2215
2244
 
2216
2245
  // src/schemas/oauth.ts
2217
- var import_zod_openapi24 = require("@hono/zod-openapi");
2246
+ var import_zod_openapi25 = require("@hono/zod-openapi");
2218
2247
  var SCOPES = [
2219
2248
  // umbrella
2220
2249
  "read",
@@ -2282,11 +2311,11 @@ function scopeSatisfies(required, granted) {
2282
2311
  return false;
2283
2312
  }
2284
2313
  var InsufficientScopeErrorSchema = ApiErrorSchema.extend({
2285
- error: import_zod_openapi24.z.object({
2286
- code: import_zod_openapi24.z.literal("INSUFFICIENT_SCOPE"),
2287
- message: import_zod_openapi24.z.string(),
2288
- details: import_zod_openapi24.z.object({
2289
- 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()
2290
2319
  }).optional()
2291
2320
  })
2292
2321
  });
@@ -2305,96 +2334,96 @@ var OAUTH_ERROR_CODES = [
2305
2334
  "slow_down",
2306
2335
  "expired_token"
2307
2336
  ];
2308
- var OAuthErrorSchema = import_zod_openapi25.z.object({
2309
- error: import_zod_openapi25.z.enum(OAUTH_ERROR_CODES),
2310
- error_description: import_zod_openapi25.z.string().optional()
2311
- });
2312
- var AuthorizeRequestSchema = import_zod_openapi25.z.object({
2313
- client_id: import_zod_openapi25.z.string().min(1),
2314
- redirect_uri: import_zod_openapi25.z.string().min(1),
2315
- scope: import_zod_openapi25.z.string().min(1),
2316
- code_challenge: import_zod_openapi25.z.string().min(1),
2317
- code_challenge_method: import_zod_openapi25.z.literal("S256"),
2318
- state: import_zod_openapi25.z.string().optional()
2319
- });
2320
- var AuthorizeResponseSchema = import_zod_openapi25.z.object({
2321
- redirectUri: import_zod_openapi25.z.string()
2322
- });
2323
- var TokenRequestSchema = import_zod_openapi25.z.discriminatedUnion("grant_type", [
2324
- import_zod_openapi25.z.object({
2325
- grant_type: import_zod_openapi25.z.literal("authorization_code"),
2326
- code: import_zod_openapi25.z.string().min(1),
2327
- code_verifier: import_zod_openapi25.z.string().min(1),
2328
- redirect_uri: import_zod_openapi25.z.string().min(1),
2329
- 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)
2330
2359
  }),
2331
- import_zod_openapi25.z.object({
2332
- grant_type: import_zod_openapi25.z.literal("refresh_token"),
2333
- refresh_token: import_zod_openapi25.z.string().min(1),
2334
- client_id: import_zod_openapi25.z.string().min(1),
2335
- 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()
2336
2365
  }),
2337
2366
  // RFC 8628 §3.4 — device authorization grant. The client polls with the
2338
2367
  // opaque `device_code` returned by `/oauth/device/authorize`.
2339
- import_zod_openapi25.z.object({
2340
- grant_type: import_zod_openapi25.z.literal("urn:ietf:params:oauth:grant-type:device_code"),
2341
- device_code: import_zod_openapi25.z.string().min(1),
2342
- 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)
2343
2372
  })
2344
2373
  ]);
2345
2374
  var DEVICE_CODE_GRANT_TYPE = "urn:ietf:params:oauth:grant-type:device_code";
2346
- var TokenResponseSchema = import_zod_openapi25.z.object({
2347
- access_token: import_zod_openapi25.z.string(),
2348
- token_type: import_zod_openapi25.z.literal("Bearer"),
2349
- expires_in: import_zod_openapi25.z.number(),
2350
- refresh_token: import_zod_openapi25.z.string(),
2351
- scope: import_zod_openapi25.z.string()
2352
- });
2353
- var RevokeRequestSchema = import_zod_openapi25.z.object({
2354
- token: import_zod_openapi25.z.string().min(1),
2355
- token_type_hint: import_zod_openapi25.z.string().optional()
2356
- });
2357
- var RevokeResponseSchema = import_zod_openapi25.z.object({});
2358
- var DeviceAuthorizeRequestSchema = import_zod_openapi25.z.object({
2359
- client_id: import_zod_openapi25.z.string().min(1),
2360
- scope: import_zod_openapi25.z.string().min(1)
2361
- });
2362
- var DeviceAuthorizeResponseSchema = import_zod_openapi25.z.object({
2363
- device_code: import_zod_openapi25.z.string(),
2364
- user_code: import_zod_openapi25.z.string(),
2365
- verification_uri: import_zod_openapi25.z.string(),
2366
- verification_uri_complete: import_zod_openapi25.z.string(),
2367
- expires_in: import_zod_openapi25.z.number(),
2368
- interval: import_zod_openapi25.z.number()
2369
- });
2370
- var DeviceVerifyRequestSchema = import_zod_openapi25.z.object({
2371
- user_code: import_zod_openapi25.z.string().min(1),
2372
- action: import_zod_openapi25.z.enum(["approve", "deny"])
2373
- });
2374
- var DeviceVerifyResponseSchema = import_zod_openapi25.z.object({
2375
- status: import_zod_openapi25.z.enum(["approved", "denied"])
2376
- });
2377
- var DeviceInfoResponseSchema = import_zod_openapi25.z.object({
2378
- client_id: import_zod_openapi25.z.string(),
2379
- 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())
2380
2409
  });
2381
2410
  var GRANT_TYPES_SUPPORTED = ["authorization_code", "refresh_token", DEVICE_CODE_GRANT_TYPE];
2382
- var DiscoveryResponseSchema = import_zod_openapi25.z.object({
2383
- issuer: import_zod_openapi25.z.string(),
2384
- authorization_endpoint: import_zod_openapi25.z.string(),
2385
- token_endpoint: import_zod_openapi25.z.string(),
2386
- revocation_endpoint: import_zod_openapi25.z.string(),
2387
- device_authorization_endpoint: import_zod_openapi25.z.string().optional(),
2388
- scopes_supported: import_zod_openapi25.z.array(import_zod_openapi25.z.string()),
2389
- response_types_supported: import_zod_openapi25.z.array(import_zod_openapi25.z.string()),
2390
- grant_types_supported: import_zod_openapi25.z.array(import_zod_openapi25.z.string()),
2391
- code_challenge_methods_supported: import_zod_openapi25.z.array(import_zod_openapi25.z.string()),
2392
- 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())
2393
2422
  });
2394
2423
  var DISCOVERY_SCOPES_SUPPORTED = ISSUABLE_SCOPES;
2395
2424
 
2396
2425
  // src/contracts/oauth.ts
2397
- var authorizeRoute = (0, import_zod_openapi26.createRoute)({
2426
+ var authorizeRoute = (0, import_zod_openapi27.createRoute)({
2398
2427
  method: "post",
2399
2428
  path: "/oauth/authorize",
2400
2429
  tags: ["oauth"],
@@ -2424,7 +2453,7 @@ var authorizeRoute = (0, import_zod_openapi26.createRoute)({
2424
2453
  }
2425
2454
  }
2426
2455
  });
2427
- var tokenRoute = (0, import_zod_openapi26.createRoute)({
2456
+ var tokenRoute = (0, import_zod_openapi27.createRoute)({
2428
2457
  method: "post",
2429
2458
  path: "/oauth/token",
2430
2459
  tags: ["oauth"],
@@ -2456,7 +2485,7 @@ var tokenRoute = (0, import_zod_openapi26.createRoute)({
2456
2485
  }
2457
2486
  }
2458
2487
  });
2459
- var revokeRoute = (0, import_zod_openapi26.createRoute)({
2488
+ var revokeRoute = (0, import_zod_openapi27.createRoute)({
2460
2489
  method: "post",
2461
2490
  path: "/oauth/revoke",
2462
2491
  tags: ["oauth"],
@@ -2476,7 +2505,7 @@ var revokeRoute = (0, import_zod_openapi26.createRoute)({
2476
2505
  }
2477
2506
  }
2478
2507
  });
2479
- var discoveryRoute = (0, import_zod_openapi26.createRoute)({
2508
+ var discoveryRoute = (0, import_zod_openapi27.createRoute)({
2480
2509
  method: "get",
2481
2510
  path: "/.well-known/oauth-authorization-server",
2482
2511
  tags: ["oauth"],
@@ -2488,7 +2517,7 @@ var discoveryRoute = (0, import_zod_openapi26.createRoute)({
2488
2517
  }
2489
2518
  }
2490
2519
  });
2491
- var deviceAuthorizeRoute = (0, import_zod_openapi26.createRoute)({
2520
+ var deviceAuthorizeRoute = (0, import_zod_openapi27.createRoute)({
2492
2521
  method: "post",
2493
2522
  path: "/oauth/device/authorize",
2494
2523
  tags: ["oauth"],
@@ -2516,7 +2545,7 @@ var deviceAuthorizeRoute = (0, import_zod_openapi26.createRoute)({
2516
2545
  }
2517
2546
  }
2518
2547
  });
2519
- var deviceInfoRoute = (0, import_zod_openapi26.createRoute)({
2548
+ var deviceInfoRoute = (0, import_zod_openapi27.createRoute)({
2520
2549
  method: "get",
2521
2550
  path: "/oauth/device",
2522
2551
  tags: ["oauth"],
@@ -2525,7 +2554,7 @@ var deviceInfoRoute = (0, import_zod_openapi26.createRoute)({
2525
2554
  // scopes so the web consent screen can show them before approval. Reveals
2526
2555
  // no secret. Unknown / expired / non-pending → 404 (PHASE4-Q9 option A).
2527
2556
  request: {
2528
- 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) })
2529
2558
  },
2530
2559
  responses: {
2531
2560
  200: {
@@ -2538,7 +2567,7 @@ var deviceInfoRoute = (0, import_zod_openapi26.createRoute)({
2538
2567
  }
2539
2568
  }
2540
2569
  });
2541
- var deviceVerifyRoute = (0, import_zod_openapi26.createRoute)({
2570
+ var deviceVerifyRoute = (0, import_zod_openapi27.createRoute)({
2542
2571
  method: "post",
2543
2572
  path: "/oauth/device/verify",
2544
2573
  tags: ["oauth"],
@@ -2579,95 +2608,95 @@ var oauthRoutes = {
2579
2608
  };
2580
2609
 
2581
2610
  // src/contracts/user.ts
2582
- var import_zod_openapi29 = require("@hono/zod-openapi");
2611
+ var import_zod_openapi30 = require("@hono/zod-openapi");
2583
2612
 
2584
2613
  // src/schemas/user.ts
2585
- var import_zod_openapi28 = require("@hono/zod-openapi");
2614
+ var import_zod_openapi29 = require("@hono/zod-openapi");
2586
2615
 
2587
2616
  // src/schemas/bookmark.ts
2588
- var import_zod_openapi27 = require("@hono/zod-openapi");
2589
- var BookmarkSchema = import_zod_openapi27.z.object({
2590
- _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(),
2591
2620
  page: PageSchema,
2592
- user: import_zod_openapi27.z.union([import_zod_openapi27.z.string(), UserPublicSchema]),
2593
- 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()
2594
2623
  });
2595
- var GetBookmarkRequestSchema = import_zod_openapi27.z.object({
2596
- page_id: import_zod_openapi27.z.string()
2624
+ var GetBookmarkRequestSchema = import_zod_openapi28.z.object({
2625
+ page_id: import_zod_openapi28.z.string()
2597
2626
  });
2598
- var BookmarkResponseSchema = import_zod_openapi27.z.object({
2627
+ var BookmarkResponseSchema = import_zod_openapi28.z.object({
2599
2628
  bookmark: BookmarkSchema.nullable()
2600
2629
  });
2601
- var ListMyBookmarksResponseSchema = import_zod_openapi27.z.object({
2602
- bookmarks: import_zod_openapi27.z.array(BookmarkSchema),
2630
+ var ListMyBookmarksResponseSchema = import_zod_openapi28.z.object({
2631
+ bookmarks: import_zod_openapi28.z.array(BookmarkSchema),
2603
2632
  pager: PagerSchema,
2604
- total: import_zod_openapi27.z.number()
2633
+ total: import_zod_openapi28.z.number()
2605
2634
  });
2606
- var AddBookmarkRequestSchema = import_zod_openapi27.z.object({
2607
- page_id: import_zod_openapi27.z.string()
2635
+ var AddBookmarkRequestSchema = import_zod_openapi28.z.object({
2636
+ page_id: import_zod_openapi28.z.string()
2608
2637
  });
2609
- var RemoveBookmarkRequestSchema = import_zod_openapi27.z.object({
2610
- page_id: import_zod_openapi27.z.string()
2638
+ var RemoveBookmarkRequestSchema = import_zod_openapi28.z.object({
2639
+ page_id: import_zod_openapi28.z.string()
2611
2640
  });
2612
- var RemoveBookmarkResponseSchema = import_zod_openapi27.z.object({
2613
- ok: import_zod_openapi27.z.literal(true)
2641
+ var RemoveBookmarkResponseSchema = import_zod_openapi28.z.object({
2642
+ ok: import_zod_openapi28.z.literal(true)
2614
2643
  });
2615
2644
 
2616
2645
  // src/schemas/user.ts
2617
- 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));
2618
2647
  var UserStatusEnum = UserPublicStatus;
2619
- var UserLanguageSchema = import_zod_openapi28.z.enum(["en", "ja"]);
2620
- var PaginationRequestSchema = import_zod_openapi28.z.object({
2621
- limit: import_zod_openapi28.z.coerce.number().optional().default(50),
2622
- offset: import_zod_openapi28.z.coerce.number().optional().default(0)
2623
- });
2624
- var UserListItemSchema = import_zod_openapi28.z.object({
2625
- _id: import_zod_openapi28.z.string(),
2626
- username: import_zod_openapi28.z.string(),
2627
- name: import_zod_openapi28.z.string(),
2628
- image: import_zod_openapi28.z.string().nullable().optional()
2629
- });
2630
- var ListUsersRequestSchema = import_zod_openapi28.z.object({
2631
- 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(),
2632
2661
  // Cap the page size so a client can't request the whole user table in one
2633
2662
  // unbounded find+sort (mirrors the page-list `limit` guard).
2634
- limit: import_zod_openapi28.z.coerce.number().int().min(1).max(100).optional().default(24),
2635
- 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)
2636
2665
  });
2637
- var ListUsersResponseSchema = import_zod_openapi28.z.object({
2638
- users: import_zod_openapi28.z.array(UserListItemSchema),
2666
+ var ListUsersResponseSchema = import_zod_openapi29.z.object({
2667
+ users: import_zod_openapi29.z.array(UserListItemSchema),
2639
2668
  pager: PagerSchema,
2640
- total: import_zod_openapi28.z.number()
2669
+ total: import_zod_openapi29.z.number()
2641
2670
  });
2642
- var UserPageResponseSchema = import_zod_openapi28.z.object({
2671
+ var UserPageResponseSchema = import_zod_openapi29.z.object({
2643
2672
  user: UserPublicSchema,
2644
2673
  // Page statistics
2645
- createdPagesCount: import_zod_openapi28.z.number(),
2646
- bookmarksCount: import_zod_openapi28.z.number(),
2674
+ createdPagesCount: import_zod_openapi29.z.number(),
2675
+ bookmarksCount: import_zod_openapi29.z.number(),
2647
2676
  // Optionally include recent items for initial display
2648
- recentPages: import_zod_openapi28.z.array(PageSchema).optional(),
2649
- 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()
2650
2679
  });
2651
- var UserBookmarksResponseSchema = import_zod_openapi28.z.object({
2652
- bookmarks: import_zod_openapi28.z.array(BookmarkSchema),
2680
+ var UserBookmarksResponseSchema = import_zod_openapi29.z.object({
2681
+ bookmarks: import_zod_openapi29.z.array(BookmarkSchema),
2653
2682
  pager: PagerSchema,
2654
- total: import_zod_openapi28.z.number()
2683
+ total: import_zod_openapi29.z.number()
2655
2684
  });
2656
- var UserPagesResponseSchema = import_zod_openapi28.z.object({
2657
- pages: import_zod_openapi28.z.array(PageSchema),
2685
+ var UserPagesResponseSchema = import_zod_openapi29.z.object({
2686
+ pages: import_zod_openapi29.z.array(PageSchema),
2658
2687
  pager: PagerSchema,
2659
- total: import_zod_openapi28.z.number()
2688
+ total: import_zod_openapi29.z.number()
2660
2689
  });
2661
- var UserNotFoundErrorSchema = import_zod_openapi28.z.object({
2662
- error: import_zod_openapi28.z.object({
2663
- code: import_zod_openapi28.z.literal("USER_NOT_FOUND"),
2664
- 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")
2665
2694
  })
2666
2695
  });
2667
2696
 
2668
2697
  // src/contracts/user.ts
2669
- var UsernameParamSchema = import_zod_openapi29.z.object({ username: import_zod_openapi29.z.string() });
2670
- 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)({
2671
2700
  method: "get",
2672
2701
  path: "/user/{username}",
2673
2702
  tags: ["user"],
@@ -2695,7 +2724,7 @@ var getUserPageRoute = (0, import_zod_openapi29.createRoute)({
2695
2724
  }
2696
2725
  }
2697
2726
  });
2698
- var getUserBookmarksRoute = (0, import_zod_openapi29.createRoute)({
2727
+ var getUserBookmarksRoute = (0, import_zod_openapi30.createRoute)({
2699
2728
  method: "get",
2700
2729
  path: "/user/{username}/bookmarks",
2701
2730
  tags: ["user"],
@@ -2724,7 +2753,7 @@ var getUserBookmarksRoute = (0, import_zod_openapi29.createRoute)({
2724
2753
  }
2725
2754
  }
2726
2755
  });
2727
- var getUserPagesRoute = (0, import_zod_openapi29.createRoute)({
2756
+ var getUserPagesRoute = (0, import_zod_openapi30.createRoute)({
2728
2757
  method: "get",
2729
2758
  path: "/user/{username}/pages",
2730
2759
  tags: ["user"],
@@ -2753,7 +2782,7 @@ var getUserPagesRoute = (0, import_zod_openapi29.createRoute)({
2753
2782
  }
2754
2783
  }
2755
2784
  });
2756
- var listMembersRoute = (0, import_zod_openapi29.createRoute)({
2785
+ var listMembersRoute = (0, import_zod_openapi30.createRoute)({
2757
2786
  method: "get",
2758
2787
  path: "/users",
2759
2788
  tags: ["user"],
@@ -2785,8 +2814,8 @@ var userRoutes = {
2785
2814
  };
2786
2815
 
2787
2816
  // src/contracts/bookmark.ts
2788
- var import_zod_openapi30 = require("@hono/zod-openapi");
2789
- var getBookmarkRoute = (0, import_zod_openapi30.createRoute)({
2817
+ var import_zod_openapi31 = require("@hono/zod-openapi");
2818
+ var getBookmarkRoute = (0, import_zod_openapi31.createRoute)({
2790
2819
  method: "get",
2791
2820
  path: "/bookmarks",
2792
2821
  tags: ["bookmark"],
@@ -2814,7 +2843,7 @@ var getBookmarkRoute = (0, import_zod_openapi30.createRoute)({
2814
2843
  }
2815
2844
  }
2816
2845
  });
2817
- var listMyBookmarksRoute = (0, import_zod_openapi30.createRoute)({
2846
+ var listMyBookmarksRoute = (0, import_zod_openapi31.createRoute)({
2818
2847
  method: "get",
2819
2848
  path: "/bookmarks/me",
2820
2849
  tags: ["bookmark"],
@@ -2838,7 +2867,7 @@ var listMyBookmarksRoute = (0, import_zod_openapi30.createRoute)({
2838
2867
  }
2839
2868
  }
2840
2869
  });
2841
- var addBookmarkRoute = (0, import_zod_openapi30.createRoute)({
2870
+ var addBookmarkRoute = (0, import_zod_openapi31.createRoute)({
2842
2871
  method: "post",
2843
2872
  path: "/bookmarks",
2844
2873
  tags: ["bookmark"],
@@ -2868,7 +2897,7 @@ var addBookmarkRoute = (0, import_zod_openapi30.createRoute)({
2868
2897
  }
2869
2898
  }
2870
2899
  });
2871
- var removeBookmarkRoute = (0, import_zod_openapi30.createRoute)({
2900
+ var removeBookmarkRoute = (0, import_zod_openapi31.createRoute)({
2872
2901
  method: "delete",
2873
2902
  path: "/bookmarks",
2874
2903
  tags: ["bookmark"],
@@ -2906,41 +2935,41 @@ var bookmarkRoutes = {
2906
2935
  };
2907
2936
 
2908
2937
  // src/contracts/backlink.ts
2909
- var import_zod_openapi32 = require("@hono/zod-openapi");
2938
+ var import_zod_openapi33 = require("@hono/zod-openapi");
2910
2939
 
2911
2940
  // src/schemas/backlink.ts
2912
- var import_zod_openapi31 = require("@hono/zod-openapi");
2913
- var ObjectIdString = import_zod_openapi31.z.string().regex(/^[0-9a-f]{24}$/, "Invalid ObjectId");
2914
- var BacklinkFromPageSchema = import_zod_openapi31.z.object({
2915
- _id: import_zod_openapi31.z.string(),
2916
- 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()
2917
2946
  });
2918
- var BacklinkFromRevisionSchema = import_zod_openapi31.z.object({
2919
- _id: import_zod_openapi31.z.string(),
2947
+ var BacklinkFromRevisionSchema = import_zod_openapi32.z.object({
2948
+ _id: import_zod_openapi32.z.string(),
2920
2949
  author: UserPublicSchema.nullable().optional()
2921
2950
  });
2922
- var BacklinkSchema = import_zod_openapi31.z.object({
2923
- _id: import_zod_openapi31.z.string(),
2951
+ var BacklinkSchema = import_zod_openapi32.z.object({
2952
+ _id: import_zod_openapi32.z.string(),
2924
2953
  // The destination page's id (the page being linked TO). Always the
2925
2954
  // page passed in the request, but echoed for cache-key parity with the
2926
2955
  // legacy response.
2927
- page: import_zod_openapi31.z.string(),
2956
+ page: import_zod_openapi32.z.string(),
2928
2957
  fromPage: BacklinkFromPageSchema,
2929
2958
  fromRevision: BacklinkFromRevisionSchema,
2930
- updatedAt: import_zod_openapi31.z.string()
2959
+ updatedAt: import_zod_openapi32.z.string()
2931
2960
  });
2932
- var GetBacklinksRequestSchema = import_zod_openapi31.z.object({
2961
+ var GetBacklinksRequestSchema = import_zod_openapi32.z.object({
2933
2962
  page_id: ObjectIdString,
2934
- limit: import_zod_openapi31.z.coerce.number().int().min(1).max(100).optional().default(20),
2935
- 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)
2936
2965
  });
2937
- var GetBacklinksResponseSchema = import_zod_openapi31.z.object({
2938
- backlinks: import_zod_openapi31.z.array(BacklinkSchema),
2939
- 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()
2940
2969
  });
2941
2970
 
2942
2971
  // src/contracts/backlink.ts
2943
- var getBacklinksRoute = (0, import_zod_openapi32.createRoute)({
2972
+ var getBacklinksRoute = (0, import_zod_openapi33.createRoute)({
2944
2973
  method: "get",
2945
2974
  path: "/backlinks",
2946
2975
  tags: ["backlink"],
@@ -2961,6 +2990,10 @@ var getBacklinksRoute = (0, import_zod_openapi32.createRoute)({
2961
2990
  401: {
2962
2991
  description: "Authentication required",
2963
2992
  content: { "application/json": { schema: AuthenticationRequiredErrorSchema } }
2993
+ },
2994
+ 404: {
2995
+ description: "Page not found or not granted",
2996
+ content: { "application/json": { schema: PageNotFoundErrorSchema } }
2964
2997
  }
2965
2998
  }
2966
2999
  });
@@ -2969,59 +3002,59 @@ var backlinkRoutes = {
2969
3002
  };
2970
3003
 
2971
3004
  // src/contracts/comment.ts
2972
- var import_zod_openapi34 = require("@hono/zod-openapi");
3005
+ var import_zod_openapi35 = require("@hono/zod-openapi");
2973
3006
 
2974
3007
  // src/schemas/comment.ts
2975
- var import_zod_openapi33 = require("@hono/zod-openapi");
2976
- var CommentSchema = import_zod_openapi33.z.object({
2977
- _id: import_zod_openapi33.z.string(),
2978
- 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(),
2979
3012
  // creator is populated to a user object on the API side; allow string fallback for safety
2980
- creator: import_zod_openapi33.z.union([import_zod_openapi33.z.string(), PageUserSchema]).nullable(),
2981
- revision: import_zod_openapi33.z.string(),
2982
- comment: import_zod_openapi33.z.string(),
2983
- commentPosition: import_zod_openapi33.z.number().default(-1),
2984
- createdAt: import_zod_openapi33.z.string()
2985
- });
2986
- var ListCommentsRequestSchema = import_zod_openapi33.z.object({
2987
- page_id: import_zod_openapi33.z.string().optional(),
2988
- revision_id: import_zod_openapi33.z.string().optional()
2989
- });
2990
- var ListCommentsResponseSchema = import_zod_openapi33.z.object({
2991
- comments: import_zod_openapi33.z.array(CommentSchema)
2992
- });
2993
- var AddCommentRequestSchema = import_zod_openapi33.z.object({
2994
- page_id: import_zod_openapi33.z.string().min(1, "page_id is required"),
2995
- revision_id: import_zod_openapi33.z.string().min(1, "revision_id is required"),
2996
- comment: import_zod_openapi33.z.string().min(1, "comment is required"),
2997
- comment_position: import_zod_openapi33.z.number().int().optional()
2998
- });
2999
- 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({
3000
3033
  comment: CommentSchema,
3001
- newlyWatching: import_zod_openapi33.z.boolean()
3034
+ newlyWatching: import_zod_openapi34.z.boolean()
3002
3035
  });
3003
- var DeleteCommentRequestSchema = import_zod_openapi33.z.object({
3004
- comment_id: import_zod_openapi33.z.string().min(1, "comment_id is required"),
3005
- 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")
3006
3039
  });
3007
- var DeleteCommentResponseSchema = import_zod_openapi33.z.object({
3008
- ok: import_zod_openapi33.z.literal(true)
3040
+ var DeleteCommentResponseSchema = import_zod_openapi34.z.object({
3041
+ ok: import_zod_openapi34.z.literal(true)
3009
3042
  });
3010
- var CommentNotFoundErrorSchema = import_zod_openapi33.z.object({
3011
- error: import_zod_openapi33.z.object({
3012
- code: import_zod_openapi33.z.literal("COMMENT_NOT_FOUND"),
3013
- 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")
3014
3047
  })
3015
3048
  });
3016
- var CommentInvalidRequestErrorSchema = import_zod_openapi33.z.object({
3017
- error: import_zod_openapi33.z.object({
3018
- code: import_zod_openapi33.z.literal("INVALID_REQUEST"),
3019
- 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()
3020
3053
  })
3021
3054
  });
3022
3055
 
3023
3056
  // src/contracts/comment.ts
3024
- var listCommentsRoute = (0, import_zod_openapi34.createRoute)({
3057
+ var listCommentsRoute = (0, import_zod_openapi35.createRoute)({
3025
3058
  method: "get",
3026
3059
  path: "/comments",
3027
3060
  tags: ["comment"],
@@ -3049,7 +3082,7 @@ var listCommentsRoute = (0, import_zod_openapi34.createRoute)({
3049
3082
  }
3050
3083
  }
3051
3084
  });
3052
- var addCommentRoute = (0, import_zod_openapi34.createRoute)({
3085
+ var addCommentRoute = (0, import_zod_openapi35.createRoute)({
3053
3086
  method: "post",
3054
3087
  path: "/comments",
3055
3088
  tags: ["comment"],
@@ -3079,7 +3112,7 @@ var addCommentRoute = (0, import_zod_openapi34.createRoute)({
3079
3112
  }
3080
3113
  }
3081
3114
  });
3082
- var deleteCommentRoute = (0, import_zod_openapi34.createRoute)({
3115
+ var deleteCommentRoute = (0, import_zod_openapi35.createRoute)({
3083
3116
  method: "delete",
3084
3117
  path: "/comments",
3085
3118
  tags: ["comment"],
@@ -3120,50 +3153,50 @@ var commentRoutes = {
3120
3153
  };
3121
3154
 
3122
3155
  // src/contracts/revision.ts
3123
- var import_zod_openapi36 = require("@hono/zod-openapi");
3156
+ var import_zod_openapi37 = require("@hono/zod-openapi");
3124
3157
 
3125
3158
  // src/schemas/revision.ts
3126
- var import_zod_openapi35 = require("@hono/zod-openapi");
3127
- var RevisionMetaSchema = import_zod_openapi35.z.object({
3128
- _id: import_zod_openapi35.z.string(),
3129
- 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(),
3130
3163
  author: PageUserSchema.nullable().optional(),
3131
3164
  savedBy: PageUserSchema.nullable().optional(),
3132
- contributors: import_zod_openapi35.z.array(PageUserSchema).optional(),
3165
+ contributors: import_zod_openapi36.z.array(PageUserSchema).optional(),
3133
3166
  // RFC-0010 — edit channel. `web` (browser / collab editor) vs the API
3134
3167
  // token paths (`oauth` / `pat`). Absent on pre-RFC-0010 revisions. The
3135
3168
  // history UI shows an "app" chip for the token paths.
3136
- editVia: import_zod_openapi35.z.enum(["web", "oauth", "pat"]).optional(),
3137
- createdAt: import_zod_openapi35.z.string()
3169
+ editVia: import_zod_openapi36.z.enum(["web", "oauth", "pat"]).optional(),
3170
+ createdAt: import_zod_openapi36.z.string()
3138
3171
  });
3139
- var ListRevisionsRequestSchema = import_zod_openapi35.z.object({
3140
- limit: import_zod_openapi35.z.coerce.number().int().positive().max(200).optional().default(50),
3141
- 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)
3142
3175
  });
3143
- var ListRevisionsResponseSchema = import_zod_openapi35.z.object({
3144
- revisions: import_zod_openapi35.z.array(RevisionMetaSchema),
3176
+ var ListRevisionsResponseSchema = import_zod_openapi36.z.object({
3177
+ revisions: import_zod_openapi36.z.array(RevisionMetaSchema),
3145
3178
  pager: PagerSchema
3146
3179
  });
3147
- var GetRevisionResponseSchema = import_zod_openapi35.z.object({
3180
+ var GetRevisionResponseSchema = import_zod_openapi36.z.object({
3148
3181
  revision: RevisionSchema
3149
3182
  });
3150
- var GetRevisionsRequestSchema = import_zod_openapi35.z.object({
3151
- 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")
3152
3185
  });
3153
- var GetRevisionsResponseSchema = import_zod_openapi35.z.object({
3154
- revisions: import_zod_openapi35.z.array(RevisionSchema)
3186
+ var GetRevisionsResponseSchema = import_zod_openapi36.z.object({
3187
+ revisions: import_zod_openapi36.z.array(RevisionSchema)
3155
3188
  });
3156
- var RevisionInvalidRequestErrorSchema = import_zod_openapi35.z.object({
3157
- error: import_zod_openapi35.z.object({
3158
- code: import_zod_openapi35.z.literal("INVALID_REQUEST"),
3159
- 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()
3160
3193
  })
3161
3194
  });
3162
3195
 
3163
3196
  // src/contracts/revision.ts
3164
- var PageIdParamSchema = import_zod_openapi36.z.object({ page_id: import_zod_openapi36.z.string() });
3165
- var RevisionIdParamSchema = import_zod_openapi36.z.object({ id: import_zod_openapi36.z.string() });
3166
- 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)({
3167
3200
  method: "get",
3168
3201
  path: "/pages/{page_id}/revisions",
3169
3202
  tags: ["revision"],
@@ -3192,7 +3225,7 @@ var listRevisionsRoute = (0, import_zod_openapi36.createRoute)({
3192
3225
  }
3193
3226
  }
3194
3227
  });
3195
- var getRevisionsRoute = (0, import_zod_openapi36.createRoute)({
3228
+ var getRevisionsRoute = (0, import_zod_openapi37.createRoute)({
3196
3229
  method: "get",
3197
3230
  path: "/pages/revisions",
3198
3231
  tags: ["revision"],
@@ -3220,7 +3253,7 @@ var getRevisionsRoute = (0, import_zod_openapi36.createRoute)({
3220
3253
  }
3221
3254
  }
3222
3255
  });
3223
- var getRevisionRoute = (0, import_zod_openapi36.createRoute)({
3256
+ var getRevisionRoute = (0, import_zod_openapi37.createRoute)({
3224
3257
  method: "get",
3225
3258
  path: "/pages/revisions/{id}",
3226
3259
  tags: ["revision"],
@@ -3258,24 +3291,24 @@ var revisionRoutes = {
3258
3291
  };
3259
3292
 
3260
3293
  // src/contracts/notification.ts
3261
- var import_zod_openapi38 = require("@hono/zod-openapi");
3294
+ var import_zod_openapi39 = require("@hono/zod-openapi");
3262
3295
 
3263
3296
  // src/schemas/notification.ts
3264
- var import_zod_openapi37 = require("@hono/zod-openapi");
3265
- 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"]);
3266
3299
  var NotificationStatusEnum = {
3267
3300
  UNREAD: "UNREAD",
3268
3301
  UNOPENED: "UNOPENED",
3269
3302
  OPENED: "OPENED"
3270
3303
  };
3271
- var NotificationActionSchema = import_zod_openapi37.z.enum(["COMMENT", "LIKE", "MENTION", "UPDATE"]);
3304
+ var NotificationActionSchema = import_zod_openapi38.z.enum(["COMMENT", "LIKE", "MENTION", "UPDATE"]);
3272
3305
  var NotificationActionEnum = {
3273
3306
  COMMENT: "COMMENT",
3274
3307
  LIKE: "LIKE",
3275
3308
  MENTION: "MENTION",
3276
3309
  UPDATE: "UPDATE"
3277
3310
  };
3278
- var NotificationTargetModelSchema = import_zod_openapi37.z.enum(["Page"]);
3311
+ var NotificationTargetModelSchema = import_zod_openapi38.z.enum(["Page"]);
3279
3312
  var NotificationTargetModelEnum = {
3280
3313
  PAGE: "Page"
3281
3314
  };
@@ -3284,71 +3317,71 @@ var PageRefSchema = PageSchema.pick({
3284
3317
  path: true,
3285
3318
  status: true
3286
3319
  });
3287
- var NotificationSchema = import_zod_openapi37.z.object({
3288
- _id: import_zod_openapi37.z.string(),
3289
- 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(),
3290
3323
  targetModel: NotificationTargetModelSchema,
3291
3324
  target: PageRefSchema,
3292
3325
  action: NotificationActionSchema,
3293
3326
  status: NotificationStatusSchema,
3294
- actionUsers: import_zod_openapi37.z.array(UserPublicSchema),
3295
- createdAt: import_zod_openapi37.z.string()
3327
+ actionUsers: import_zod_openapi38.z.array(UserPublicSchema),
3328
+ createdAt: import_zod_openapi38.z.string()
3296
3329
  });
3297
- var ListNotificationsRequestSchema = import_zod_openapi37.z.object({
3298
- limit: import_zod_openapi37.z.coerce.number().optional().default(10),
3299
- 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)
3300
3333
  });
3301
- var ListNotificationsResponseSchema = import_zod_openapi37.z.object({
3302
- notifications: import_zod_openapi37.z.array(NotificationSchema),
3334
+ var ListNotificationsResponseSchema = import_zod_openapi38.z.object({
3335
+ notifications: import_zod_openapi38.z.array(NotificationSchema),
3303
3336
  pager: PagerSchema
3304
3337
  });
3305
- var MarkAllAsReadResponseSchema = import_zod_openapi37.z.object({
3306
- ok: import_zod_openapi37.z.literal(true)
3338
+ var MarkAllAsReadResponseSchema = import_zod_openapi38.z.object({
3339
+ ok: import_zod_openapi38.z.literal(true)
3307
3340
  });
3308
- var OpenNotificationParamSchema = import_zod_openapi37.z.object({
3309
- id: import_zod_openapi37.z.string()
3341
+ var OpenNotificationParamSchema = import_zod_openapi38.z.object({
3342
+ id: import_zod_openapi38.z.string()
3310
3343
  });
3311
- var OpenNotificationResponseSchema = import_zod_openapi37.z.object({
3344
+ var OpenNotificationResponseSchema = import_zod_openapi38.z.object({
3312
3345
  notification: NotificationSchema
3313
3346
  });
3314
- var NotificationStatusResponseSchema = import_zod_openapi37.z.object({
3315
- count: import_zod_openapi37.z.number()
3347
+ var NotificationStatusResponseSchema = import_zod_openapi38.z.object({
3348
+ count: import_zod_openapi38.z.number()
3316
3349
  });
3317
- var NotificationNotFoundErrorSchema = import_zod_openapi37.z.object({
3318
- error: import_zod_openapi37.z.object({
3319
- code: import_zod_openapi37.z.literal("NOTIFICATION_NOT_FOUND"),
3320
- 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")
3321
3354
  })
3322
3355
  });
3323
- var NotificationsTokenResponseSchema = import_zod_openapi37.z.object({
3324
- token: import_zod_openapi37.z.string(),
3325
- selfUserId: import_zod_openapi37.z.string(),
3326
- 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()
3327
3360
  });
3328
- var NotificationsTokenPayloadSchema = import_zod_openapi37.z.object({
3329
- selfUserId: import_zod_openapi37.z.string(),
3361
+ var NotificationsTokenPayloadSchema = import_zod_openapi38.z.object({
3362
+ selfUserId: import_zod_openapi38.z.string(),
3330
3363
  // Random UUID mixed into every signed token so two tokens minted
3331
3364
  // within the same second still produce byte-different JWT strings.
3332
3365
  // The browser uses the token as a React effect dependency to drive
3333
3366
  // the WebSocket reconnect — without `jti`, the iat/exp pair is
3334
3367
  // identical at second granularity and the dep stays stable.
3335
- jti: import_zod_openapi37.z.string().uuid(),
3336
- iat: import_zod_openapi37.z.number().int(),
3337
- 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()
3338
3371
  });
3339
- var NotificationsChangedMessageSchema = import_zod_openapi37.z.object({
3340
- type: import_zod_openapi37.z.literal("changed")
3372
+ var NotificationsChangedMessageSchema = import_zod_openapi38.z.object({
3373
+ type: import_zod_openapi38.z.literal("changed")
3341
3374
  });
3342
3375
  var NotificationsServerMessageSchema = NotificationsChangedMessageSchema;
3343
3376
 
3344
3377
  // src/contracts/notification.ts
3345
- var NotificationInvalidRequestErrorSchema = import_zod_openapi38.z.object({
3346
- error: import_zod_openapi38.z.object({
3347
- code: import_zod_openapi38.z.literal("INVALID_REQUEST"),
3348
- 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()
3349
3382
  })
3350
3383
  });
3351
- var listNotificationsRoute = (0, import_zod_openapi38.createRoute)({
3384
+ var listNotificationsRoute = (0, import_zod_openapi39.createRoute)({
3352
3385
  method: "get",
3353
3386
  path: "/notifications",
3354
3387
  tags: ["notification"],
@@ -3372,7 +3405,7 @@ var listNotificationsRoute = (0, import_zod_openapi38.createRoute)({
3372
3405
  }
3373
3406
  }
3374
3407
  });
3375
- var markAllAsReadRoute = (0, import_zod_openapi38.createRoute)({
3408
+ var markAllAsReadRoute = (0, import_zod_openapi39.createRoute)({
3376
3409
  method: "post",
3377
3410
  path: "/notifications/read",
3378
3411
  tags: ["notification"],
@@ -3393,7 +3426,7 @@ var markAllAsReadRoute = (0, import_zod_openapi38.createRoute)({
3393
3426
  }
3394
3427
  }
3395
3428
  });
3396
- var getUnreadCountRoute = (0, import_zod_openapi38.createRoute)({
3429
+ var getUnreadCountRoute = (0, import_zod_openapi39.createRoute)({
3397
3430
  method: "get",
3398
3431
  path: "/notifications/status",
3399
3432
  tags: ["notification"],
@@ -3414,7 +3447,7 @@ var getUnreadCountRoute = (0, import_zod_openapi38.createRoute)({
3414
3447
  }
3415
3448
  }
3416
3449
  });
3417
- var openNotificationRoute = (0, import_zod_openapi38.createRoute)({
3450
+ var openNotificationRoute = (0, import_zod_openapi39.createRoute)({
3418
3451
  method: "post",
3419
3452
  path: "/notifications/{id}/open",
3420
3453
  tags: ["notification"],
@@ -3446,7 +3479,7 @@ var openNotificationRoute = (0, import_zod_openapi38.createRoute)({
3446
3479
  }
3447
3480
  }
3448
3481
  });
3449
- var getNotificationsTokenRoute = (0, import_zod_openapi38.createRoute)({
3482
+ var getNotificationsTokenRoute = (0, import_zod_openapi39.createRoute)({
3450
3483
  method: "get",
3451
3484
  path: "/notifications/token",
3452
3485
  tags: ["notification"],
@@ -3481,26 +3514,60 @@ var notificationRoutes = {
3481
3514
  };
3482
3515
 
3483
3516
  // src/contracts/page.ts
3484
- var import_zod_openapi39 = require("@hono/zod-openapi");
3485
- var PageBadRequestErrorSchema = import_zod_openapi39.z.object({
3486
- error: import_zod_openapi39.z.object({
3487
- code: import_zod_openapi39.z.string(),
3488
- 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()
3489
3556
  })
3490
3557
  });
3491
- var DeletePageRequestSchema = import_zod_openapi39.z.object({
3492
- page_id: import_zod_openapi39.z.string(),
3493
- revision_id: import_zod_openapi39.z.string().optional(),
3494
- 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()
3495
3562
  });
3496
- var RevertDeletedPageRequestSchema = import_zod_openapi39.z.object({
3497
- page_id: import_zod_openapi39.z.string()
3563
+ var RevertDeletedPageRequestSchema = import_zod_openapi41.z.object({
3564
+ page_id: import_zod_openapi41.z.string()
3498
3565
  });
3499
- var PageIdBodySchema = import_zod_openapi39.z.object({
3500
- page_id: import_zod_openapi39.z.string()
3566
+ var PageIdBodySchema = import_zod_openapi41.z.object({
3567
+ page_id: import_zod_openapi41.z.string()
3501
3568
  });
3502
- var PageResponseSchema = import_zod_openapi39.z.object({ page: PageSchema });
3503
- 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)({
3504
3571
  method: "get",
3505
3572
  path: "/pages",
3506
3573
  tags: ["page"],
@@ -3525,10 +3592,19 @@ var getPageRoute = (0, import_zod_openapi39.createRoute)({
3525
3592
  404: {
3526
3593
  description: "Page not found",
3527
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 } }
3528
3604
  }
3529
3605
  }
3530
3606
  });
3531
- var listPagesRoute = (0, import_zod_openapi39.createRoute)({
3607
+ var listPagesRoute = (0, import_zod_openapi41.createRoute)({
3532
3608
  method: "get",
3533
3609
  path: "/pages/list",
3534
3610
  tags: ["page"],
@@ -3548,7 +3624,7 @@ var listPagesRoute = (0, import_zod_openapi39.createRoute)({
3548
3624
  }
3549
3625
  }
3550
3626
  });
3551
- var listPageChildrenRoute = (0, import_zod_openapi39.createRoute)({
3627
+ var listPageChildrenRoute = (0, import_zod_openapi41.createRoute)({
3552
3628
  method: "get",
3553
3629
  path: "/pages/children",
3554
3630
  tags: ["page"],
@@ -3568,7 +3644,7 @@ var listPageChildrenRoute = (0, import_zod_openapi39.createRoute)({
3568
3644
  }
3569
3645
  }
3570
3646
  });
3571
- var createPageRoute = (0, import_zod_openapi39.createRoute)({
3647
+ var createPageRoute = (0, import_zod_openapi41.createRoute)({
3572
3648
  method: "post",
3573
3649
  path: "/pages",
3574
3650
  tags: ["page"],
@@ -3594,7 +3670,7 @@ var createPageRoute = (0, import_zod_openapi39.createRoute)({
3594
3670
  }
3595
3671
  }
3596
3672
  });
3597
- var updatePageRoute = (0, import_zod_openapi39.createRoute)({
3673
+ var updatePageRoute = (0, import_zod_openapi41.createRoute)({
3598
3674
  method: "put",
3599
3675
  path: "/pages",
3600
3676
  tags: ["page"],
@@ -3628,7 +3704,7 @@ var updatePageRoute = (0, import_zod_openapi39.createRoute)({
3628
3704
  }
3629
3705
  }
3630
3706
  });
3631
- var setPageGrantRoute = (0, import_zod_openapi39.createRoute)({
3707
+ var setPageGrantRoute = (0, import_zod_openapi41.createRoute)({
3632
3708
  method: "put",
3633
3709
  path: "/pages/grant",
3634
3710
  tags: ["page"],
@@ -3658,7 +3734,7 @@ var setPageGrantRoute = (0, import_zod_openapi39.createRoute)({
3658
3734
  }
3659
3735
  }
3660
3736
  });
3661
- var seenPageRoute = (0, import_zod_openapi39.createRoute)({
3737
+ var seenPageRoute = (0, import_zod_openapi41.createRoute)({
3662
3738
  method: "post",
3663
3739
  path: "/pages/seen",
3664
3740
  tags: ["page"],
@@ -3688,7 +3764,7 @@ var seenPageRoute = (0, import_zod_openapi39.createRoute)({
3688
3764
  }
3689
3765
  }
3690
3766
  });
3691
- var getSeenUsersRoute = (0, import_zod_openapi39.createRoute)({
3767
+ var getSeenUsersRoute = (0, import_zod_openapi41.createRoute)({
3692
3768
  method: "get",
3693
3769
  path: "/pages/seen-users",
3694
3770
  tags: ["page"],
@@ -3716,7 +3792,7 @@ var getSeenUsersRoute = (0, import_zod_openapi39.createRoute)({
3716
3792
  }
3717
3793
  }
3718
3794
  });
3719
- var likePageRoute = (0, import_zod_openapi39.createRoute)({
3795
+ var likePageRoute = (0, import_zod_openapi41.createRoute)({
3720
3796
  method: "post",
3721
3797
  path: "/pages/like",
3722
3798
  tags: ["page"],
@@ -3746,7 +3822,7 @@ var likePageRoute = (0, import_zod_openapi39.createRoute)({
3746
3822
  }
3747
3823
  }
3748
3824
  });
3749
- var unlikePageRoute = (0, import_zod_openapi39.createRoute)({
3825
+ var unlikePageRoute = (0, import_zod_openapi41.createRoute)({
3750
3826
  method: "post",
3751
3827
  path: "/pages/unlike",
3752
3828
  tags: ["page"],
@@ -3776,7 +3852,53 @@ var unlikePageRoute = (0, import_zod_openapi39.createRoute)({
3776
3852
  }
3777
3853
  }
3778
3854
  });
3779
- 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)({
3780
3902
  method: "get",
3781
3903
  path: "/pages/watch",
3782
3904
  tags: ["page"],
@@ -3804,7 +3926,7 @@ var getWatchStatusRoute = (0, import_zod_openapi39.createRoute)({
3804
3926
  }
3805
3927
  }
3806
3928
  });
3807
- var setWatchStatusRoute = (0, import_zod_openapi39.createRoute)({
3929
+ var setWatchStatusRoute = (0, import_zod_openapi41.createRoute)({
3808
3930
  method: "put",
3809
3931
  path: "/pages/watch",
3810
3932
  tags: ["page"],
@@ -3834,7 +3956,7 @@ var setWatchStatusRoute = (0, import_zod_openapi39.createRoute)({
3834
3956
  }
3835
3957
  }
3836
3958
  });
3837
- var deletePageRoute = (0, import_zod_openapi39.createRoute)({
3959
+ var deletePageRoute = (0, import_zod_openapi41.createRoute)({
3838
3960
  method: "delete",
3839
3961
  path: "/pages",
3840
3962
  tags: ["page"],
@@ -3868,7 +3990,7 @@ var deletePageRoute = (0, import_zod_openapi39.createRoute)({
3868
3990
  }
3869
3991
  }
3870
3992
  });
3871
- var revertDeletedPageRoute = (0, import_zod_openapi39.createRoute)({
3993
+ var revertDeletedPageRoute = (0, import_zod_openapi41.createRoute)({
3872
3994
  method: "post",
3873
3995
  path: "/pages/revert",
3874
3996
  tags: ["page"],
@@ -3898,7 +4020,7 @@ var revertDeletedPageRoute = (0, import_zod_openapi39.createRoute)({
3898
4020
  }
3899
4021
  }
3900
4022
  });
3901
- var revertToRevisionRoute = (0, import_zod_openapi39.createRoute)({
4023
+ var revertToRevisionRoute = (0, import_zod_openapi41.createRoute)({
3902
4024
  method: "post",
3903
4025
  path: "/pages/revert-to-revision",
3904
4026
  tags: ["page"],
@@ -3928,7 +4050,7 @@ var revertToRevisionRoute = (0, import_zod_openapi39.createRoute)({
3928
4050
  }
3929
4051
  }
3930
4052
  });
3931
- var renamePageRoute = (0, import_zod_openapi39.createRoute)({
4053
+ var renamePageRoute = (0, import_zod_openapi41.createRoute)({
3932
4054
  method: "post",
3933
4055
  path: "/pages/rename",
3934
4056
  tags: ["page"],
@@ -3948,7 +4070,7 @@ var renamePageRoute = (0, import_zod_openapi39.createRoute)({
3948
4070
  description: "PAGE_INVALID_NAME / PAGE_EXISTS / PAGE_RENAME_FAILED / PAGE_RENAME_TREE_FAILED",
3949
4071
  content: {
3950
4072
  "application/json": {
3951
- schema: import_zod_openapi39.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
4073
+ schema: import_zod_openapi41.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
3952
4074
  }
3953
4075
  }
3954
4076
  },
@@ -3966,7 +4088,7 @@ var renamePageRoute = (0, import_zod_openapi39.createRoute)({
3966
4088
  }
3967
4089
  }
3968
4090
  });
3969
- var renameSubtreeRoute = (0, import_zod_openapi39.createRoute)({
4091
+ var renameSubtreeRoute = (0, import_zod_openapi41.createRoute)({
3970
4092
  method: "post",
3971
4093
  path: "/pages/rename-subtree",
3972
4094
  tags: ["page"],
@@ -3986,7 +4108,7 @@ var renameSubtreeRoute = (0, import_zod_openapi39.createRoute)({
3986
4108
  description: "PAGE_INVALID_NAME / PAGE_RENAME_TREE_FAILED (collisions, nothing to move, or partial failure)",
3987
4109
  content: {
3988
4110
  "application/json": {
3989
- schema: import_zod_openapi39.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
4111
+ schema: import_zod_openapi41.z.union([PageBadRequestErrorSchema, RenameTreeErrorSchema])
3990
4112
  }
3991
4113
  }
3992
4114
  },
@@ -4017,6 +4139,8 @@ var pageRoutes = {
4017
4139
  likePageRoute,
4018
4140
  // POST /pages/unlike — unlikePage
4019
4141
  unlikePageRoute,
4142
+ // POST /pages/link-access — claimPageLinkAccess (grant-on-first-access)
4143
+ claimPageLinkAccessRoute,
4020
4144
  // GET /pages/watch — getWatchStatus
4021
4145
  getWatchStatusRoute,
4022
4146
  // PUT /pages/watch — setWatchStatus
@@ -4034,19 +4158,19 @@ var pageRoutes = {
4034
4158
  };
4035
4159
 
4036
4160
  // src/contracts/page-preview.ts
4037
- var import_zod_openapi41 = require("@hono/zod-openapi");
4161
+ var import_zod_openapi43 = require("@hono/zod-openapi");
4038
4162
 
4039
4163
  // src/schemas/page-preview.ts
4040
- var import_zod_openapi40 = require("@hono/zod-openapi");
4041
- var PreviewPageRequestSchema = import_zod_openapi40.z.object({
4042
- 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()
4043
4167
  });
4044
- var PreviewPageResponseSchema = import_zod_openapi40.z.object({
4045
- renderedAst: import_zod_openapi40.z.unknown()
4168
+ var PreviewPageResponseSchema = import_zod_openapi42.z.object({
4169
+ renderedAst: import_zod_openapi42.z.unknown()
4046
4170
  });
4047
4171
 
4048
4172
  // src/contracts/page-preview.ts
4049
- var previewPageRoute = (0, import_zod_openapi41.createRoute)({
4173
+ var previewPageRoute = (0, import_zod_openapi43.createRoute)({
4050
4174
  method: "post",
4051
4175
  path: "/pages/preview",
4052
4176
  tags: ["page-preview"],
@@ -4077,11 +4201,11 @@ var pagePreviewRoutes = {
4077
4201
  };
4078
4202
 
4079
4203
  // src/contracts/page-collab.ts
4080
- var import_zod_openapi42 = require("@hono/zod-openapi");
4081
- var PageIdPathParamsSchema = import_zod_openapi42.z.object({
4082
- 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" })
4083
4207
  });
4084
- var getYjsTokenRoute = (0, import_zod_openapi42.createRoute)({
4208
+ var getYjsTokenRoute = (0, import_zod_openapi44.createRoute)({
4085
4209
  method: "get",
4086
4210
  path: "/pages/{id}/yjs-token",
4087
4211
  tags: ["page-collab"],
@@ -4118,79 +4242,79 @@ var pageCollabRoutes = {
4118
4242
  };
4119
4243
 
4120
4244
  // src/contracts/presence.ts
4121
- var import_zod_openapi44 = require("@hono/zod-openapi");
4245
+ var import_zod_openapi46 = require("@hono/zod-openapi");
4122
4246
 
4123
4247
  // src/schemas/presence.ts
4124
- var import_zod_openapi43 = require("@hono/zod-openapi");
4125
- var PresenceTokenResponseSchema = import_zod_openapi43.z.object({
4126
- token: import_zod_openapi43.z.string(),
4127
- pageId: import_zod_openapi43.z.string(),
4128
- selfUserId: import_zod_openapi43.z.string(),
4129
- expiresAt: import_zod_openapi43.z.string()
4130
- });
4131
- var PresenceTokenPayloadSchema = import_zod_openapi43.z.object({
4132
- userId: import_zod_openapi43.z.string(),
4133
- pageId: import_zod_openapi43.z.string(),
4134
- iat: import_zod_openapi43.z.number().int(),
4135
- exp: import_zod_openapi43.z.number().int()
4136
- });
4137
- var PresenceViewerSchema = import_zod_openapi43.z.object({
4138
- userId: import_zod_openapi43.z.string(),
4139
- username: import_zod_openapi43.z.string(),
4140
- displayName: import_zod_openapi43.z.string(),
4141
- avatarUrl: import_zod_openapi43.z.string().nullable(),
4142
- isEditing: import_zod_openapi43.z.boolean(),
4143
- joinedAt: import_zod_openapi43.z.number().int()
4144
- });
4145
- var PresenceHeartbeatMessageSchema = import_zod_openapi43.z.object({
4146
- 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")
4147
4271
  });
4148
4272
  var PresenceClientMessageSchema = PresenceHeartbeatMessageSchema;
4149
- var PresenceViewersMessageSchema = import_zod_openapi43.z.object({
4150
- type: import_zod_openapi43.z.literal("viewers"),
4151
- viewers: import_zod_openapi43.z.array(PresenceViewerSchema)
4152
- });
4153
- var PresencePageUpdatedMessageSchema = import_zod_openapi43.z.object({
4154
- type: import_zod_openapi43.z.literal("page-updated"),
4155
- pageId: import_zod_openapi43.z.string(),
4156
- revisionId: import_zod_openapi43.z.string(),
4157
- editorUserId: import_zod_openapi43.z.string(),
4158
- editorDisplayName: import_zod_openapi43.z.string()
4159
- });
4160
- var PresenceCommentChangedMessageSchema = import_zod_openapi43.z.object({
4161
- type: import_zod_openapi43.z.literal("comment-changed"),
4162
- pageId: import_zod_openapi43.z.string(),
4163
- changeType: import_zod_openapi43.z.enum(["added", "removed"]),
4164
- commentId: import_zod_openapi43.z.string(),
4165
- actorUserId: import_zod_openapi43.z.string().optional()
4166
- });
4167
- var PresenceServerMessageSchema = import_zod_openapi43.z.discriminatedUnion("type", [
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", [
4168
4292
  PresenceViewersMessageSchema,
4169
4293
  PresencePageUpdatedMessageSchema,
4170
4294
  PresenceCommentChangedMessageSchema
4171
4295
  ]);
4172
- var LikerSchema = import_zod_openapi43.z.object({
4173
- id: import_zod_openapi43.z.string(),
4174
- username: import_zod_openapi43.z.string(),
4175
- displayName: import_zod_openapi43.z.string(),
4176
- avatarUrl: import_zod_openapi43.z.string().nullable(),
4177
- likedAt: import_zod_openapi43.z.string().nullable()
4178
- });
4179
- var LikersResponseSchema = import_zod_openapi43.z.object({
4180
- users: import_zod_openapi43.z.array(LikerSchema),
4181
- totalCount: import_zod_openapi43.z.number().int().nonnegative()
4182
- });
4183
- var GetLikersRequestSchema = import_zod_openapi43.z.object({
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({
4184
4308
  // Optional cap on returned `users`. `totalCount` always reflects the
4185
4309
  // full count regardless of `limit`. Omit for the full list.
4186
- limit: import_zod_openapi43.z.coerce.number().int().positive().optional()
4310
+ limit: import_zod_openapi45.z.coerce.number().int().positive().optional()
4187
4311
  });
4188
4312
 
4189
4313
  // src/contracts/presence.ts
4190
- var PageIdPathParamsSchema2 = import_zod_openapi44.z.object({
4191
- 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" })
4192
4316
  });
4193
- var getPresenceTokenRoute = (0, import_zod_openapi44.createRoute)({
4317
+ var getPresenceTokenRoute = (0, import_zod_openapi46.createRoute)({
4194
4318
  method: "get",
4195
4319
  path: "/pages/{id}/presence-token",
4196
4320
  tags: ["presence"],
@@ -4222,7 +4346,7 @@ var getPresenceTokenRoute = (0, import_zod_openapi44.createRoute)({
4222
4346
  }
4223
4347
  }
4224
4348
  });
4225
- var getLikersRoute = (0, import_zod_openapi44.createRoute)({
4349
+ var getLikersRoute = (0, import_zod_openapi46.createRoute)({
4226
4350
  method: "get",
4227
4351
  path: "/pages/{id}/likers",
4228
4352
  tags: ["presence"],
@@ -4261,50 +4385,50 @@ var presenceRoutes = {
4261
4385
  };
4262
4386
 
4263
4387
  // src/contracts/draft.ts
4264
- var import_zod_openapi46 = require("@hono/zod-openapi");
4388
+ var import_zod_openapi48 = require("@hono/zod-openapi");
4265
4389
 
4266
4390
  // src/schemas/draft.ts
4267
- var import_zod_openapi45 = require("@hono/zod-openapi");
4268
- var CreateDraftRequestSchema = import_zod_openapi45.z.object({
4269
- path: import_zod_openapi45.z.string().min(1),
4270
- 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()
4271
4395
  });
4272
- var CreateDraftResponseSchema = import_zod_openapi45.z.object({
4273
- pageId: import_zod_openapi45.z.string()
4396
+ var CreateDraftResponseSchema = import_zod_openapi47.z.object({
4397
+ pageId: import_zod_openapi47.z.string()
4274
4398
  });
4275
- var DraftConflictOwnerSchema = import_zod_openapi45.z.object({
4276
- id: import_zod_openapi45.z.string(),
4277
- username: import_zod_openapi45.z.string(),
4278
- 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()
4279
4403
  });
4280
- var DraftPathConflictErrorSchema = import_zod_openapi45.z.object({
4281
- 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"),
4282
4406
  owner: DraftConflictOwnerSchema,
4283
- message: import_zod_openapi45.z.string()
4407
+ message: import_zod_openapi47.z.string()
4284
4408
  });
4285
- var DraftBadRequestErrorSchema = import_zod_openapi45.z.object({
4286
- error: import_zod_openapi45.z.enum(["invalid_path", "path_taken"]),
4287
- 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()
4288
4412
  });
4289
- var DraftNotFoundErrorSchema = import_zod_openapi45.z.object({
4290
- error: import_zod_openapi45.z.literal("draft_not_found"),
4291
- 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()
4292
4416
  });
4293
- var DraftSummarySchema = import_zod_openapi45.z.object({
4294
- pageId: import_zod_openapi45.z.string(),
4295
- path: import_zod_openapi45.z.string(),
4296
- createdAt: import_zod_openapi45.z.string(),
4297
- 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()
4298
4422
  });
4299
- var ListDraftsResponseSchema = import_zod_openapi45.z.object({
4300
- drafts: import_zod_openapi45.z.array(DraftSummarySchema)
4423
+ var ListDraftsResponseSchema = import_zod_openapi47.z.object({
4424
+ drafts: import_zod_openapi47.z.array(DraftSummarySchema)
4301
4425
  });
4302
4426
 
4303
4427
  // src/contracts/draft.ts
4304
- var DraftIdPathParamsSchema = import_zod_openapi46.z.object({
4305
- 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" })
4306
4430
  });
4307
- var createDraftRoute = (0, import_zod_openapi46.createRoute)({
4431
+ var createDraftRoute = (0, import_zod_openapi48.createRoute)({
4308
4432
  method: "post",
4309
4433
  path: "/pages/drafts",
4310
4434
  tags: ["draft"],
@@ -4334,7 +4458,7 @@ var createDraftRoute = (0, import_zod_openapi46.createRoute)({
4334
4458
  }
4335
4459
  }
4336
4460
  });
4337
- var listDraftsRoute = (0, import_zod_openapi46.createRoute)({
4461
+ var listDraftsRoute = (0, import_zod_openapi48.createRoute)({
4338
4462
  method: "get",
4339
4463
  path: "/pages/drafts",
4340
4464
  tags: ["draft"],
@@ -4351,7 +4475,7 @@ var listDraftsRoute = (0, import_zod_openapi46.createRoute)({
4351
4475
  }
4352
4476
  }
4353
4477
  });
4354
- var cancelDraftRoute = (0, import_zod_openapi46.createRoute)({
4478
+ var cancelDraftRoute = (0, import_zod_openapi48.createRoute)({
4355
4479
  method: "delete",
4356
4480
  path: "/pages/drafts/{id}",
4357
4481
  tags: ["draft"],
@@ -4382,42 +4506,8 @@ var draftRoutes = {
4382
4506
  };
4383
4507
 
4384
4508
  // src/contracts/autocomplete.ts
4385
- var import_zod_openapi48 = require("@hono/zod-openapi");
4386
-
4387
- // src/schemas/autocomplete.ts
4388
- var import_zod_openapi47 = require("@hono/zod-openapi");
4389
- var AutocompleteRequestSchema = import_zod_openapi47.z.object({
4390
- q: import_zod_openapi47.z.string().min(1).max(128),
4391
- limit: import_zod_openapi47.z.coerce.number().int().min(1).max(25).optional().default(10),
4392
- /**
4393
- * How `q` is matched against the candidate text. `'substring'` (the
4394
- * default, used by the editor's `@mention` / `[[wikilink]]` pickers)
4395
- * keeps the historical anywhere-in-string match. `'prefix'` anchors
4396
- * the match at the start — used by the "create page" modal, where the
4397
- * user is building a `/`-rooted path and only true prefixes are valid
4398
- * completions of what they have typed so far.
4399
- */
4400
- anchor: import_zod_openapi47.z.enum(["substring", "prefix"]).optional().default("substring")
4401
- });
4402
- var AutocompleteResultSchema = import_zod_openapi47.z.object({
4403
- id: import_zod_openapi47.z.string(),
4404
- label: import_zod_openapi47.z.string(),
4405
- display: import_zod_openapi47.z.string(),
4406
- avatar: import_zod_openapi47.z.string().nullable().optional(),
4407
- modifiedAt: import_zod_openapi47.z.string().nullable().optional(),
4408
- score: import_zod_openapi47.z.number()
4409
- });
4410
- var AutocompleteResponseSchema = import_zod_openapi47.z.object({
4411
- results: import_zod_openapi47.z.array(AutocompleteResultSchema)
4412
- });
4413
- var AutocompleteRateLimitErrorSchema = import_zod_openapi47.z.object({
4414
- error: import_zod_openapi47.z.literal("rate_limited"),
4415
- message: import_zod_openapi47.z.string(),
4416
- retryAfterSeconds: import_zod_openapi47.z.number()
4417
- });
4418
-
4419
- // src/contracts/autocomplete.ts
4420
- var autocompleteUsersRoute = (0, import_zod_openapi48.createRoute)({
4509
+ var import_zod_openapi49 = require("@hono/zod-openapi");
4510
+ var autocompleteUsersRoute = (0, import_zod_openapi49.createRoute)({
4421
4511
  method: "get",
4422
4512
  path: "/users/autocomplete",
4423
4513
  tags: ["autocomplete"],
@@ -4445,7 +4535,7 @@ var autocompleteUsersRoute = (0, import_zod_openapi48.createRoute)({
4445
4535
  }
4446
4536
  }
4447
4537
  });
4448
- var autocompletePagesRoute = (0, import_zod_openapi48.createRoute)({
4538
+ var autocompletePagesRoute = (0, import_zod_openapi49.createRoute)({
4449
4539
  method: "get",
4450
4540
  path: "/pages/autocomplete",
4451
4541
  tags: ["autocomplete"],
@@ -4479,50 +4569,50 @@ var autocompleteRoutes = {
4479
4569
  };
4480
4570
 
4481
4571
  // src/contracts/attachment.ts
4482
- var import_zod_openapi50 = require("@hono/zod-openapi");
4572
+ var import_zod_openapi51 = require("@hono/zod-openapi");
4483
4573
 
4484
4574
  // src/schemas/attachment.ts
4485
- var import_zod_openapi49 = require("@hono/zod-openapi");
4486
- var AttachmentSchema = import_zod_openapi49.z.object({
4487
- _id: import_zod_openapi49.z.string(),
4488
- 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(),
4489
4579
  creator: UserPublicSchema,
4490
- filePath: import_zod_openapi49.z.string(),
4491
- fileName: import_zod_openapi49.z.string(),
4492
- originalName: import_zod_openapi49.z.string(),
4493
- fileFormat: import_zod_openapi49.z.string(),
4494
- fileSize: import_zod_openapi49.z.number(),
4495
- createdAt: import_zod_openapi49.z.string(),
4496
- url: import_zod_openapi49.z.string(),
4497
- 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()
4498
4588
  });
4499
4589
  var AttachmentMetaSchema = AttachmentSchema.omit({ inUse: true });
4500
- var ListAttachmentsResponseSchema = import_zod_openapi49.z.object({
4501
- attachments: import_zod_openapi49.z.array(AttachmentSchema)
4590
+ var ListAttachmentsResponseSchema = import_zod_openapi50.z.object({
4591
+ attachments: import_zod_openapi50.z.array(AttachmentSchema)
4502
4592
  });
4503
- var PastAttachmentUsageSchema = import_zod_openapi49.z.object({
4593
+ var PastAttachmentUsageSchema = import_zod_openapi50.z.object({
4504
4594
  attachment: AttachmentSchema,
4505
- referencingRevisions: import_zod_openapi49.z.array(
4506
- import_zod_openapi49.z.object({
4507
- revisionId: import_zod_openapi49.z.string(),
4508
- 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(),
4509
4599
  author: UserPublicSchema
4510
4600
  })
4511
4601
  )
4512
4602
  });
4513
- var AttachmentUsageResponseSchema = import_zod_openapi49.z.object({
4514
- pagePath: import_zod_openapi49.z.string(),
4515
- latest: import_zod_openapi49.z.array(AttachmentSchema),
4516
- 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)
4517
4607
  });
4518
- var AddAttachmentResponseSchema = import_zod_openapi49.z.object({
4608
+ var AddAttachmentResponseSchema = import_zod_openapi50.z.object({
4519
4609
  attachment: AttachmentSchema,
4520
- url: import_zod_openapi49.z.string()
4610
+ url: import_zod_openapi50.z.string()
4521
4611
  });
4522
- var RemoveAttachmentResponseSchema = import_zod_openapi49.z.object({
4523
- success: import_zod_openapi49.z.literal(true)
4612
+ var RemoveAttachmentResponseSchema = import_zod_openapi50.z.object({
4613
+ success: import_zod_openapi50.z.literal(true)
4524
4614
  });
4525
- var AttachmentErrorCodeSchema = import_zod_openapi49.z.enum([
4615
+ var AttachmentErrorCodeSchema = import_zod_openapi50.z.enum([
4526
4616
  "INVALID_PAGE_ID",
4527
4617
  "PAGE_NOT_FOUND",
4528
4618
  "FILE_MISSING",
@@ -4534,43 +4624,43 @@ var AttachmentErrorCodeSchema = import_zod_openapi49.z.enum([
4534
4624
  "UPLOAD_FAILED",
4535
4625
  "REMOVE_FAILED"
4536
4626
  ]);
4537
- var AttachmentErrorSchema = import_zod_openapi49.z.object({
4538
- error: import_zod_openapi49.z.object({
4627
+ var AttachmentErrorSchema = import_zod_openapi50.z.object({
4628
+ error: import_zod_openapi50.z.object({
4539
4629
  code: AttachmentErrorCodeSchema,
4540
- message: import_zod_openapi49.z.string()
4630
+ message: import_zod_openapi50.z.string()
4541
4631
  })
4542
4632
  });
4543
- var UploadAttachmentResponseSchema = import_zod_openapi49.z.object({
4544
- url: import_zod_openapi49.z.string(),
4545
- filename: import_zod_openapi49.z.string(),
4546
- mimeType: import_zod_openapi49.z.string(),
4547
- 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()
4548
4638
  });
4549
- var UploadAttachmentErrorCodeSchema = import_zod_openapi49.z.enum(["too_large", "disallowed_type", "rate_limited", "no_permission"]);
4550
- 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({
4551
4641
  error: UploadAttachmentErrorCodeSchema,
4552
- message: import_zod_openapi49.z.string(),
4553
- 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()
4554
4644
  });
4555
4645
  var IMAGE_UPLOAD_MIME = ["image/png", "image/jpeg", "image/gif", "image/webp", "image/svg+xml"];
4556
4646
  var DND_EXTRA_UPLOAD_MIME = ["application/pdf", "text/plain", "text/markdown", "text/csv", "application/zip"];
4557
4647
 
4558
4648
  // src/contracts/attachment.ts
4559
- var PageIdPathParamsSchema3 = import_zod_openapi50.z.object({
4560
- 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" })
4561
4651
  });
4562
- var AttachmentIdPathParamsSchema = import_zod_openapi50.z.object({
4563
- 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" })
4564
4654
  });
4565
- var AddAttachmentBodySchema = import_zod_openapi50.z.object({
4566
- 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()
4567
4657
  });
4568
- var UploadAttachmentBodySchema = import_zod_openapi50.z.object({
4569
- file: import_zod_openapi50.z.any().openapi({ type: "string", format: "binary" }).optional(),
4570
- pageId: import_zod_openapi50.z.string().optional(),
4571
- 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"] })
4572
4662
  });
4573
- var listAttachmentsRoute = (0, import_zod_openapi50.createRoute)({
4663
+ var listAttachmentsRoute = (0, import_zod_openapi51.createRoute)({
4574
4664
  method: "get",
4575
4665
  path: "/pages/{pageId}/attachments",
4576
4666
  tags: ["attachment"],
@@ -4602,7 +4692,7 @@ var listAttachmentsRoute = (0, import_zod_openapi50.createRoute)({
4602
4692
  }
4603
4693
  }
4604
4694
  });
4605
- var addAttachmentRoute = (0, import_zod_openapi50.createRoute)({
4695
+ var addAttachmentRoute = (0, import_zod_openapi51.createRoute)({
4606
4696
  method: "post",
4607
4697
  path: "/pages/{pageId}/attachments",
4608
4698
  tags: ["attachment"],
@@ -4641,7 +4731,7 @@ var addAttachmentRoute = (0, import_zod_openapi50.createRoute)({
4641
4731
  }
4642
4732
  }
4643
4733
  });
4644
- var getAttachmentUsageRoute = (0, import_zod_openapi50.createRoute)({
4734
+ var getAttachmentUsageRoute = (0, import_zod_openapi51.createRoute)({
4645
4735
  method: "get",
4646
4736
  path: "/pages/{pageId}/attachments/usage",
4647
4737
  tags: ["attachment"],
@@ -4673,7 +4763,7 @@ var getAttachmentUsageRoute = (0, import_zod_openapi50.createRoute)({
4673
4763
  }
4674
4764
  }
4675
4765
  });
4676
- var getAttachmentMetaRoute = (0, import_zod_openapi50.createRoute)({
4766
+ var getAttachmentMetaRoute = (0, import_zod_openapi51.createRoute)({
4677
4767
  method: "get",
4678
4768
  path: "/attachments/{id}/meta",
4679
4769
  tags: ["attachment"],
@@ -4705,7 +4795,7 @@ var getAttachmentMetaRoute = (0, import_zod_openapi50.createRoute)({
4705
4795
  }
4706
4796
  }
4707
4797
  });
4708
- var uploadAttachmentRoute = (0, import_zod_openapi50.createRoute)({
4798
+ var uploadAttachmentRoute = (0, import_zod_openapi51.createRoute)({
4709
4799
  method: "post",
4710
4800
  path: "/attachments/upload",
4711
4801
  tags: ["attachment"],
@@ -4751,7 +4841,7 @@ var uploadAttachmentRoute = (0, import_zod_openapi50.createRoute)({
4751
4841
  }
4752
4842
  }
4753
4843
  });
4754
- var removeAttachmentRoute = (0, import_zod_openapi50.createRoute)({
4844
+ var removeAttachmentRoute = (0, import_zod_openapi51.createRoute)({
4755
4845
  method: "delete",
4756
4846
  path: "/attachments/{id}",
4757
4847
  tags: ["attachment"],
@@ -4802,37 +4892,37 @@ var attachmentRoutes = {
4802
4892
  };
4803
4893
 
4804
4894
  // src/contracts/search.ts
4805
- var import_zod_openapi52 = require("@hono/zod-openapi");
4895
+ var import_zod_openapi53 = require("@hono/zod-openapi");
4806
4896
 
4807
4897
  // src/schemas/search.ts
4808
- var import_zod_openapi51 = require("@hono/zod-openapi");
4809
- var SearchPageTypeSchema = import_zod_openapi51.z.enum(["portal", "public", "user"]);
4810
- var SearchPagesRequestSchema = import_zod_openapi51.z.object({
4811
- q: import_zod_openapi51.z.string().min(1),
4812
- 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(),
4813
4903
  type: SearchPageTypeSchema.optional(),
4814
- page: import_zod_openapi51.z.coerce.number().int().min(1).default(1),
4815
- limit: import_zod_openapi51.z.coerce.number().int().min(1).max(100).default(50)
4816
- });
4817
- var SearchHitSchema = import_zod_openapi51.z.object({
4818
- pageId: import_zod_openapi51.z.string(),
4819
- path: import_zod_openapi51.z.string(),
4820
- score: import_zod_openapi51.z.number().optional(),
4821
- snippet: import_zod_openapi51.z.string().optional(),
4822
- 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(),
4823
4913
  page: PageSchema
4824
4914
  });
4825
- var SearchPagesResponseSchema = import_zod_openapi51.z.object({
4826
- meta: import_zod_openapi51.z.object({
4827
- took: import_zod_openapi51.z.number().optional(),
4828
- total: import_zod_openapi51.z.number(),
4829
- 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()
4830
4920
  }),
4831
- data: import_zod_openapi51.z.array(SearchHitSchema)
4921
+ data: import_zod_openapi52.z.array(SearchHitSchema)
4832
4922
  });
4833
4923
 
4834
4924
  // src/contracts/search.ts
4835
- var searchPagesRoute = (0, import_zod_openapi52.createRoute)({
4925
+ var searchPagesRoute = (0, import_zod_openapi53.createRoute)({
4836
4926
  method: "get",
4837
4927
  path: "/search",
4838
4928
  tags: ["search"],
@@ -4869,39 +4959,39 @@ var searchRoutes = {
4869
4959
  };
4870
4960
 
4871
4961
  // src/contracts/adminCrypto.ts
4872
- var import_zod_openapi54 = require("@hono/zod-openapi");
4962
+ var import_zod_openapi55 = require("@hono/zod-openapi");
4873
4963
 
4874
4964
  // src/schemas/adminCrypto.ts
4875
- var import_zod_openapi53 = require("@hono/zod-openapi");
4876
- var SensitiveConfigEntrySchema = import_zod_openapi53.z.object({
4877
- ns: import_zod_openapi53.z.string(),
4878
- key: import_zod_openapi53.z.string(),
4879
- present: import_zod_openapi53.z.boolean(),
4880
- 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()
4881
4971
  });
4882
- var CryptoStatusResponseSchema = import_zod_openapi53.z.object({
4972
+ var CryptoStatusResponseSchema = import_zod_openapi54.z.object({
4883
4973
  /** False when CROWI_ENCRYPTION_KEY is not configured — UI shows a setup hint. */
4884
- encryptionConfigured: import_zod_openapi53.z.boolean(),
4885
- unencryptedCount: import_zod_openapi53.z.number().int().min(0),
4886
- encryptedCount: import_zod_openapi53.z.number().int().min(0),
4887
- 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)
4888
4978
  });
4889
- var ReencryptResponseSchema = import_zod_openapi53.z.object({
4890
- 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),
4891
4981
  /** Already encrypted, skipped on this run. */
4892
- alreadyEncrypted: import_zod_openapi53.z.number().int().min(0),
4982
+ alreadyEncrypted: import_zod_openapi54.z.number().int().min(0),
4893
4983
  /** Sensitive registry entries that had no row in the DB at all. */
4894
- missing: import_zod_openapi53.z.number().int().min(0)
4984
+ missing: import_zod_openapi54.z.number().int().min(0)
4895
4985
  });
4896
- var EncryptionNotConfiguredErrorSchema = import_zod_openapi53.z.object({
4897
- error: import_zod_openapi53.z.object({
4898
- code: import_zod_openapi53.z.literal("ENCRYPTION_NOT_CONFIGURED"),
4899
- 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()
4900
4990
  })
4901
4991
  });
4902
4992
 
4903
4993
  // src/contracts/adminCrypto.ts
4904
- var getCryptoStatusRoute = (0, import_zod_openapi54.createRoute)({
4994
+ var getCryptoStatusRoute = (0, import_zod_openapi55.createRoute)({
4905
4995
  method: "get",
4906
4996
  path: "/admin/crypto/status",
4907
4997
  tags: ["adminCrypto"],
@@ -4926,7 +5016,7 @@ var getCryptoStatusRoute = (0, import_zod_openapi54.createRoute)({
4926
5016
  }
4927
5017
  }
4928
5018
  });
4929
- var reencryptAllRoute = (0, import_zod_openapi54.createRoute)({
5019
+ var reencryptAllRoute = (0, import_zod_openapi55.createRoute)({
4930
5020
  method: "post",
4931
5021
  path: "/admin/crypto/reencrypt",
4932
5022
  tags: ["adminCrypto"],
@@ -4961,56 +5051,56 @@ var adminCryptoRoutes = {
4961
5051
  };
4962
5052
 
4963
5053
  // src/contracts/admin/app.ts
4964
- var import_zod_openapi56 = require("@hono/zod-openapi");
5054
+ var import_zod_openapi57 = require("@hono/zod-openapi");
4965
5055
 
4966
5056
  // src/schemas/admin/app.ts
4967
- var import_zod_openapi55 = require("@hono/zod-openapi");
4968
- var GetAppSettingsResponseSchema = import_zod_openapi55.z.object({
4969
- app: import_zod_openapi55.z.object({
4970
- title: import_zod_openapi55.z.string(),
4971
- 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()
4972
5062
  }),
4973
5063
  /**
4974
5064
  * Whether a storage driver is registered (i.e. uploads are wired up).
4975
5065
  * Sourced from `Config.isUploadable()` which now consults PluginManager.
4976
5066
  */
4977
- isUploadable: import_zod_openapi55.z.boolean(),
5067
+ isUploadable: import_zod_openapi56.z.boolean(),
4978
5068
  /**
4979
5069
  * The Open / Restricted / Closed → open / restricted / closed mapping the
4980
5070
  * legacy admin controller exposed. Useful for the UI to render the current
4981
5071
  * registration mode label without knowing the internal capitalisation.
4982
5072
  */
4983
- 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()),
4984
5074
  /**
4985
5075
  * Whether the admin has dismissed the initial-setup checklist on the
4986
5076
  * dashboard. Persisted server-side (`app:setupChecklistDismissed`) so the
4987
5077
  * dismissal holds across browsers and devices, not just one localStorage.
4988
5078
  */
4989
- setupChecklistDismissed: import_zod_openapi55.z.boolean()
5079
+ setupChecklistDismissed: import_zod_openapi56.z.boolean()
4990
5080
  });
4991
- var UpdateAppSettingsRequestSchema = import_zod_openapi55.z.object({
4992
- app: import_zod_openapi55.z.object({
4993
- title: import_zod_openapi55.z.string().trim().min(1).max(100).optional(),
4994
- 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()
4995
5085
  }).optional(),
4996
5086
  /**
4997
5087
  * Toggle the dashboard initial-setup checklist's dismissed state. Sent on
4998
5088
  * its own (without the `app` block) when the admin clicks "mark as done".
4999
5089
  */
5000
- setupChecklistDismissed: import_zod_openapi55.z.boolean().optional()
5090
+ setupChecklistDismissed: import_zod_openapi56.z.boolean().optional()
5001
5091
  }).strict();
5002
- var UpdateAppSettingsResponseSchema = import_zod_openapi55.z.object({
5003
- ok: import_zod_openapi55.z.literal(true)
5004
- });
5005
- var AppSettingsValidationErrorSchema = import_zod_openapi55.z.object({
5006
- bodyResult: import_zod_openapi55.z.object({
5007
- issues: import_zod_openapi55.z.array(
5008
- import_zod_openapi55.z.object({
5009
- path: import_zod_openapi55.z.array(import_zod_openapi55.z.union([import_zod_openapi55.z.string(), import_zod_openapi55.z.number()])),
5010
- 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()
5011
5101
  })
5012
5102
  ),
5013
- name: import_zod_openapi55.z.string().optional()
5103
+ name: import_zod_openapi56.z.string().optional()
5014
5104
  })
5015
5105
  });
5016
5106
 
@@ -5031,7 +5121,7 @@ var appSettingsValidationHook = (result, c) => {
5031
5121
  400
5032
5122
  );
5033
5123
  };
5034
- var getAppSettingsRoute = (0, import_zod_openapi56.createRoute)({
5124
+ var getAppSettingsRoute = (0, import_zod_openapi57.createRoute)({
5035
5125
  method: "get",
5036
5126
  path: "/admin/app",
5037
5127
  tags: ["admin.app"],
@@ -5052,7 +5142,7 @@ var getAppSettingsRoute = (0, import_zod_openapi56.createRoute)({
5052
5142
  }
5053
5143
  }
5054
5144
  });
5055
- var updateAppSettingsRoute = (0, import_zod_openapi56.createRoute)({
5145
+ var updateAppSettingsRoute = (0, import_zod_openapi57.createRoute)({
5056
5146
  method: "put",
5057
5147
  path: "/admin/app",
5058
5148
  tags: ["admin.app"],
@@ -5089,26 +5179,26 @@ var adminAppRoutes = {
5089
5179
  };
5090
5180
 
5091
5181
  // src/contracts/admin/auth.ts
5092
- var import_zod_openapi58 = require("@hono/zod-openapi");
5182
+ var import_zod_openapi59 = require("@hono/zod-openapi");
5093
5183
 
5094
5184
  // src/schemas/admin/auth.ts
5095
- var import_zod_openapi57 = require("@hono/zod-openapi");
5096
- var AuthSettingsSchema = import_zod_openapi57.z.object({
5097
- requireThirdPartyAuth: import_zod_openapi57.z.boolean(),
5098
- 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()
5099
5189
  });
5100
5190
  var UpdateAuthSettingsRequestSchema = AuthSettingsSchema;
5101
5191
  var GetAuthSettingsResponseSchema = AuthSettingsSchema;
5102
5192
  var UpdateAuthSettingsResponseSchema = AuthSettingsSchema;
5103
- var ThirdPartyAuthUnavailableErrorSchema = import_zod_openapi57.z.object({
5104
- error: import_zod_openapi57.z.object({
5105
- code: import_zod_openapi57.z.literal("THIRD_PARTY_AUTH_UNAVAILABLE"),
5106
- 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()
5107
5197
  })
5108
5198
  });
5109
5199
 
5110
5200
  // src/contracts/admin/auth.ts
5111
- var getAuthSettingsRoute = (0, import_zod_openapi58.createRoute)({
5201
+ var getAuthSettingsRoute = (0, import_zod_openapi59.createRoute)({
5112
5202
  method: "get",
5113
5203
  path: "/admin/auth",
5114
5204
  tags: ["admin.auth"],
@@ -5133,7 +5223,7 @@ var getAuthSettingsRoute = (0, import_zod_openapi58.createRoute)({
5133
5223
  }
5134
5224
  }
5135
5225
  });
5136
- var updateAuthSettingsRoute = (0, import_zod_openapi58.createRoute)({
5226
+ var updateAuthSettingsRoute = (0, import_zod_openapi59.createRoute)({
5137
5227
  method: "put",
5138
5228
  path: "/admin/auth",
5139
5229
  tags: ["admin.auth"],
@@ -5173,44 +5263,44 @@ var adminAuthRoutes = {
5173
5263
  };
5174
5264
 
5175
5265
  // src/contracts/admin/mail.ts
5176
- var import_zod_openapi60 = require("@hono/zod-openapi");
5266
+ var import_zod_openapi61 = require("@hono/zod-openapi");
5177
5267
 
5178
5268
  // src/schemas/admin/mail.ts
5179
- var import_zod_openapi59 = require("@hono/zod-openapi");
5180
- var GetMailSettingsResponseSchema = import_zod_openapi59.z.object({
5181
- from: import_zod_openapi59.z.string(),
5182
- 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(),
5183
5273
  /** npm name of the plugin that registered the active driver, for
5184
5274
  * linking to its config page. Empty when no sender is active. */
5185
- activePlugin: import_zod_openapi59.z.string()
5275
+ activePlugin: import_zod_openapi60.z.string()
5186
5276
  });
5187
- var UpdateMailSettingsRequestSchema = import_zod_openapi59.z.object({
5188
- 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()
5189
5279
  });
5190
- var UpdateMailSettingsResponseSchema = import_zod_openapi59.z.object({
5191
- ok: import_zod_openapi59.z.literal(true)
5280
+ var UpdateMailSettingsResponseSchema = import_zod_openapi60.z.object({
5281
+ ok: import_zod_openapi60.z.literal(true)
5192
5282
  });
5193
- var SendTestMailRequestSchema = import_zod_openapi59.z.object({}).optional();
5194
- var SendTestMailResponseSchema = import_zod_openapi59.z.object({
5195
- 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),
5196
5286
  /** Address the test mail was dispatched to (= the calling admin's email). */
5197
- to: import_zod_openapi59.z.string()
5287
+ to: import_zod_openapi60.z.string()
5198
5288
  });
5199
- var SendTestMailErrorSchema = import_zod_openapi59.z.object({
5200
- error: import_zod_openapi59.z.object({
5201
- code: import_zod_openapi59.z.literal("MAIL_TEST_FAILED"),
5202
- 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()
5203
5293
  })
5204
5294
  });
5205
- var MailSettingsValidationErrorSchema = import_zod_openapi59.z.object({
5206
- bodyResult: import_zod_openapi59.z.object({
5207
- issues: import_zod_openapi59.z.array(
5208
- import_zod_openapi59.z.object({
5209
- path: import_zod_openapi59.z.array(import_zod_openapi59.z.union([import_zod_openapi59.z.string(), import_zod_openapi59.z.number()])),
5210
- 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()
5211
5301
  })
5212
5302
  ),
5213
- name: import_zod_openapi59.z.string().optional()
5303
+ name: import_zod_openapi60.z.string().optional()
5214
5304
  })
5215
5305
  });
5216
5306
 
@@ -5231,7 +5321,7 @@ var mailSettingsValidationHook = (result, c) => {
5231
5321
  400
5232
5322
  );
5233
5323
  };
5234
- var getMailSettingsRoute = (0, import_zod_openapi60.createRoute)({
5324
+ var getMailSettingsRoute = (0, import_zod_openapi61.createRoute)({
5235
5325
  method: "get",
5236
5326
  path: "/admin/mail",
5237
5327
  tags: ["admin.mail"],
@@ -5252,7 +5342,7 @@ var getMailSettingsRoute = (0, import_zod_openapi60.createRoute)({
5252
5342
  }
5253
5343
  }
5254
5344
  });
5255
- var updateMailSettingsRoute = (0, import_zod_openapi60.createRoute)({
5345
+ var updateMailSettingsRoute = (0, import_zod_openapi61.createRoute)({
5256
5346
  method: "put",
5257
5347
  path: "/admin/mail",
5258
5348
  tags: ["admin.mail"],
@@ -5283,7 +5373,7 @@ var updateMailSettingsRoute = (0, import_zod_openapi60.createRoute)({
5283
5373
  }
5284
5374
  }
5285
5375
  });
5286
- var sendTestMailRoute = (0, import_zod_openapi60.createRoute)({
5376
+ var sendTestMailRoute = (0, import_zod_openapi61.createRoute)({
5287
5377
  method: "post",
5288
5378
  path: "/admin/mail/test",
5289
5379
  tags: ["admin.mail"],
@@ -5325,30 +5415,30 @@ var adminMailRoutes = {
5325
5415
  };
5326
5416
 
5327
5417
  // src/contracts/admin/plugins.ts
5328
- var import_zod_openapi62 = require("@hono/zod-openapi");
5418
+ var import_zod_openapi63 = require("@hono/zod-openapi");
5329
5419
 
5330
5420
  // src/schemas/admin/plugins.ts
5331
- var import_zod_openapi61 = require("@hono/zod-openapi");
5332
- var PluginFieldSchema = import_zod_openapi61.z.object({
5333
- 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(),
5334
5424
  /**
5335
5425
  * Localized display label. Falls back to `name` in the form when absent.
5336
5426
  * Filled from the plugin's `configI18n[locale]` overlay by the admin API.
5337
5427
  */
5338
- label: import_zod_openapi61.z.string().optional(),
5339
- kind: import_zod_openapi61.z.enum(["string", "secret", "number", "boolean", "enum", "string-array"]),
5340
- description: import_zod_openapi61.z.string().optional(),
5341
- defaultValue: import_zod_openapi61.z.unknown().optional(),
5342
- options: import_zod_openapi61.z.array(import_zod_openapi61.z.string()).optional(),
5343
- action: import_zod_openapi61.z.object({
5344
- label: import_zod_openapi61.z.string(),
5345
- method: import_zod_openapi61.z.string(),
5346
- 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()
5347
5437
  }).optional(),
5348
- optional: import_zod_openapi61.z.boolean()
5438
+ optional: import_zod_openapi62.z.boolean()
5349
5439
  });
5350
- var AdminSidebarSection = import_zod_openapi61.z.enum(["settings", "shared", "storage", "mail", "notification", "auth", "search", "renderer", "platform"]);
5351
- 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({
5352
5442
  /**
5353
5443
  * Sidebar section to surface this plugin under. The runtime fills
5354
5444
  * this in — it's either declared by the plugin via `adminPlacement`
@@ -5357,21 +5447,28 @@ var PluginAdminPlacementSchema = import_zod_openapi61.z.object({
5357
5447
  */
5358
5448
  section: AdminSidebarSection,
5359
5449
  /** Display label (defaults to the plugin's npm name). */
5360
- label: import_zod_openapi61.z.string(),
5450
+ label: import_zod_openapi62.z.string(),
5361
5451
  /** Lucide icon name from a fixed allow-list. */
5362
- icon: import_zod_openapi61.z.string().optional()
5452
+ icon: import_zod_openapi62.z.string().optional()
5363
5453
  });
5364
- var PluginInfoSchema = import_zod_openapi61.z.object({
5365
- name: import_zod_openapi61.z.string(),
5366
- version: import_zod_openapi61.z.string(),
5367
- 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(),
5368
5465
  /** Has a configSchema (= showable config form). */
5369
- hasConfig: import_zod_openapi61.z.boolean(),
5466
+ hasConfig: import_zod_openapi62.z.boolean(),
5370
5467
  /**
5371
5468
  * Driver-registry slots this plugin currently fills. Useful for the
5372
5469
  * admin "this plugin is the active storage driver" badge.
5373
5470
  */
5374
- registers: import_zod_openapi61.z.array(import_zod_openapi61.z.string()),
5471
+ registers: import_zod_openapi62.z.array(import_zod_openapi62.z.string()),
5375
5472
  /**
5376
5473
  * Where the plugin appears in the admin sidebar. The server always
5377
5474
  * populates this even when the plugin didn't declare its own
@@ -5384,21 +5481,32 @@ var PluginInfoSchema = import_zod_openapi61.z.object({
5384
5481
  * still apply their config on the next server restart; plugins with
5385
5482
  * it apply config changes live.
5386
5483
  */
5387
- 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()
5388
5496
  });
5389
- var ListPluginsResponseSchema = import_zod_openapi61.z.object({
5390
- plugins: import_zod_openapi61.z.array(PluginInfoSchema)
5497
+ var ListPluginsResponseSchema = import_zod_openapi62.z.object({
5498
+ plugins: import_zod_openapi62.z.array(PluginInfoSchema)
5391
5499
  });
5392
- var PluginConfigResponseSchema = import_zod_openapi61.z.object({
5393
- name: import_zod_openapi61.z.string(),
5394
- fields: import_zod_openapi61.z.array(PluginFieldSchema),
5395
- 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())
5396
5504
  });
5397
- var UpdatePluginConfigRequestSchema = import_zod_openapi61.z.object({
5398
- 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())
5399
5507
  });
5400
- var UpdatePluginConfigResponseSchema = import_zod_openapi61.z.object({
5401
- ok: import_zod_openapi61.z.literal(true),
5508
+ var UpdatePluginConfigResponseSchema = import_zod_openapi62.z.object({
5509
+ ok: import_zod_openapi62.z.literal(true),
5402
5510
  /**
5403
5511
  * Whether at least one plugin's `reconfigure` hook ran successfully
5404
5512
  * for this save. `true` means the new values are already live on
@@ -5408,44 +5516,44 @@ var UpdatePluginConfigResponseSchema = import_zod_openapi61.z.object({
5408
5516
  * "saved, but apply failed" warning in that case via the response
5409
5517
  * `reconfigureFailed` flag.
5410
5518
  */
5411
- hotReloaded: import_zod_openapi61.z.boolean(),
5519
+ hotReloaded: import_zod_openapi62.z.boolean(),
5412
5520
  /**
5413
5521
  * True when at least one plugin's `reconfigure` was attempted and
5414
5522
  * threw. The save itself succeeded (Mongo + cache are updated) so
5415
5523
  * the next process boot will see the new values, but the *running*
5416
5524
  * process couldn't apply them. UI surfaces a warning toast.
5417
5525
  */
5418
- reconfigureFailed: import_zod_openapi61.z.boolean()
5526
+ reconfigureFailed: import_zod_openapi62.z.boolean()
5419
5527
  });
5420
- var PluginNotFoundErrorSchema = import_zod_openapi61.z.object({
5421
- error: import_zod_openapi61.z.object({
5422
- code: import_zod_openapi61.z.literal("PLUGIN_NOT_FOUND"),
5423
- 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()
5424
5532
  })
5425
5533
  });
5426
- var PluginConfigValidationErrorSchema = import_zod_openapi61.z.object({
5427
- error: import_zod_openapi61.z.object({
5428
- code: import_zod_openapi61.z.literal("PLUGIN_CONFIG_VALIDATION_FAILED"),
5429
- message: import_zod_openapi61.z.string(),
5430
- issues: import_zod_openapi61.z.array(
5431
- import_zod_openapi61.z.object({
5432
- path: import_zod_openapi61.z.array(import_zod_openapi61.z.union([import_zod_openapi61.z.string(), import_zod_openapi61.z.number()])),
5433
- 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()
5434
5542
  })
5435
5543
  )
5436
5544
  })
5437
5545
  });
5438
- var ClearRenderCacheResponseSchema = import_zod_openapi61.z.object({
5439
- ok: import_zod_openapi61.z.literal(true),
5440
- 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(),
5441
5549
  /** Number of cache rows removed. */
5442
- removedCount: import_zod_openapi61.z.number().int().min(0)
5550
+ removedCount: import_zod_openapi62.z.number().int().min(0)
5443
5551
  });
5444
5552
 
5445
5553
  // src/contracts/admin/plugins.ts
5446
- var PluginNameQuerySchema = import_zod_openapi62.z.object({ name: import_zod_openapi62.z.string() });
5447
- var PluginConfigQuerySchema = import_zod_openapi62.z.object({ name: import_zod_openapi62.z.string(), locale: import_zod_openapi62.z.string().optional() });
5448
- 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)({
5449
5557
  method: "get",
5450
5558
  path: "/admin/plugins",
5451
5559
  tags: ["admin.plugins"],
@@ -5470,7 +5578,7 @@ var listPluginsRoute = (0, import_zod_openapi62.createRoute)({
5470
5578
  }
5471
5579
  }
5472
5580
  });
5473
- var getPluginConfigRoute = (0, import_zod_openapi62.createRoute)({
5581
+ var getPluginConfigRoute = (0, import_zod_openapi63.createRoute)({
5474
5582
  method: "get",
5475
5583
  path: "/admin/plugins/config",
5476
5584
  tags: ["admin.plugins"],
@@ -5502,7 +5610,7 @@ var getPluginConfigRoute = (0, import_zod_openapi62.createRoute)({
5502
5610
  }
5503
5611
  }
5504
5612
  });
5505
- var updatePluginConfigRoute = (0, import_zod_openapi62.createRoute)({
5613
+ var updatePluginConfigRoute = (0, import_zod_openapi63.createRoute)({
5506
5614
  method: "put",
5507
5615
  path: "/admin/plugins/config",
5508
5616
  tags: ["admin.plugins"],
@@ -5541,8 +5649,8 @@ var updatePluginConfigRoute = (0, import_zod_openapi62.createRoute)({
5541
5649
  }
5542
5650
  }
5543
5651
  });
5544
- var ClearRenderCacheBodySchema = import_zod_openapi62.z.object({}).optional();
5545
- var clearRenderCacheAllRoute = (0, import_zod_openapi62.createRoute)({
5652
+ var ClearRenderCacheBodySchema = import_zod_openapi63.z.object({}).optional();
5653
+ var clearRenderCacheAllRoute = (0, import_zod_openapi63.createRoute)({
5546
5654
  method: "post",
5547
5655
  path: "/admin/plugins/render-cache/clear-all",
5548
5656
  tags: ["admin.plugins"],
@@ -5572,7 +5680,7 @@ var clearRenderCacheAllRoute = (0, import_zod_openapi62.createRoute)({
5572
5680
  }
5573
5681
  }
5574
5682
  });
5575
- var clearRenderCachePluginRoute = (0, import_zod_openapi62.createRoute)({
5683
+ var clearRenderCachePluginRoute = (0, import_zod_openapi63.createRoute)({
5576
5684
  method: "post",
5577
5685
  path: "/admin/plugins/render-cache/clear-plugin",
5578
5686
  tags: ["admin.plugins"],
@@ -5616,28 +5724,28 @@ var adminPluginsRoutes = {
5616
5724
  };
5617
5725
 
5618
5726
  // src/contracts/admin/search.ts
5619
- var import_zod_openapi64 = require("@hono/zod-openapi");
5727
+ var import_zod_openapi65 = require("@hono/zod-openapi");
5620
5728
 
5621
5729
  // src/schemas/admin/search.ts
5622
- var import_zod_openapi63 = require("@hono/zod-openapi");
5623
- var SearchDriverEntrySchema = import_zod_openapi63.z.object({
5624
- driverName: import_zod_openapi63.z.string(),
5625
- pluginName: import_zod_openapi63.z.string(),
5626
- isActive: import_zod_openapi63.z.boolean(),
5627
- supportsRebuild: import_zod_openapi63.z.boolean()
5628
- });
5629
- var ActiveSearchDriverSchema = import_zod_openapi63.z.object({
5630
- driverName: import_zod_openapi63.z.string(),
5631
- pluginName: import_zod_openapi63.z.string(),
5632
- supportsRebuild: import_zod_openapi63.z.boolean()
5633
- });
5634
- 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({
5635
5743
  active: ActiveSearchDriverSchema.nullable(),
5636
- drivers: import_zod_openapi63.z.array(SearchDriverEntrySchema)
5744
+ drivers: import_zod_openapi64.z.array(SearchDriverEntrySchema)
5637
5745
  });
5638
5746
 
5639
5747
  // src/contracts/admin/search.ts
5640
- var getSearchStatusRoute = (0, import_zod_openapi64.createRoute)({
5748
+ var getSearchStatusRoute = (0, import_zod_openapi65.createRoute)({
5641
5749
  method: "get",
5642
5750
  path: "/admin/search",
5643
5751
  tags: ["admin.search"],
@@ -5667,21 +5775,21 @@ var adminSearchRoutes = {
5667
5775
  };
5668
5776
 
5669
5777
  // src/contracts/admin/security.ts
5670
- var import_zod_openapi66 = require("@hono/zod-openapi");
5778
+ var import_zod_openapi67 = require("@hono/zod-openapi");
5671
5779
 
5672
5780
  // src/schemas/admin/security.ts
5673
- var import_zod_openapi65 = require("@hono/zod-openapi");
5674
- var RegistrationModeSchema = import_zod_openapi65.z.enum(["Open", "Resricted", "Closed"]);
5675
- 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({
5676
5784
  registrationMode: RegistrationModeSchema,
5677
- registrationWhiteList: import_zod_openapi65.z.array(import_zod_openapi65.z.string())
5785
+ registrationWhiteList: import_zod_openapi66.z.array(import_zod_openapi66.z.string())
5678
5786
  });
5679
5787
  var UpdateSecuritySettingsRequestSchema = SecuritySettingsSchema;
5680
5788
  var GetSecuritySettingsResponseSchema = SecuritySettingsSchema;
5681
5789
  var UpdateSecuritySettingsResponseSchema = SecuritySettingsSchema;
5682
5790
 
5683
5791
  // src/contracts/admin/security.ts
5684
- var getSecuritySettingsRoute = (0, import_zod_openapi66.createRoute)({
5792
+ var getSecuritySettingsRoute = (0, import_zod_openapi67.createRoute)({
5685
5793
  method: "get",
5686
5794
  path: "/admin/security",
5687
5795
  tags: ["admin.security"],
@@ -5706,7 +5814,7 @@ var getSecuritySettingsRoute = (0, import_zod_openapi66.createRoute)({
5706
5814
  }
5707
5815
  }
5708
5816
  });
5709
- var updateSecuritySettingsRoute = (0, import_zod_openapi66.createRoute)({
5817
+ var updateSecuritySettingsRoute = (0, import_zod_openapi67.createRoute)({
5710
5818
  method: "put",
5711
5819
  path: "/admin/security",
5712
5820
  tags: ["admin.security"],
@@ -5742,26 +5850,26 @@ var adminSecurityRoutes = {
5742
5850
  };
5743
5851
 
5744
5852
  // src/contracts/admin/storage.ts
5745
- var import_zod_openapi68 = require("@hono/zod-openapi");
5853
+ var import_zod_openapi69 = require("@hono/zod-openapi");
5746
5854
 
5747
5855
  // src/schemas/admin/storage.ts
5748
- var import_zod_openapi67 = require("@hono/zod-openapi");
5749
- var StorageDriverEntrySchema = import_zod_openapi67.z.object({
5750
- driverName: import_zod_openapi67.z.string(),
5751
- pluginName: import_zod_openapi67.z.string(),
5752
- 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()
5753
5861
  });
5754
- var ActiveStorageDriverSchema = import_zod_openapi67.z.object({
5755
- driverName: import_zod_openapi67.z.string(),
5756
- 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()
5757
5865
  });
5758
- var GetStorageStatusResponseSchema = import_zod_openapi67.z.object({
5866
+ var GetStorageStatusResponseSchema = import_zod_openapi68.z.object({
5759
5867
  active: ActiveStorageDriverSchema.nullable(),
5760
- drivers: import_zod_openapi67.z.array(StorageDriverEntrySchema)
5868
+ drivers: import_zod_openapi68.z.array(StorageDriverEntrySchema)
5761
5869
  });
5762
5870
 
5763
5871
  // src/contracts/admin/storage.ts
5764
- var getStorageStatusRoute = (0, import_zod_openapi68.createRoute)({
5872
+ var getStorageStatusRoute = (0, import_zod_openapi69.createRoute)({
5765
5873
  method: "get",
5766
5874
  path: "/admin/storage",
5767
5875
  tags: ["admin.storage"],
@@ -5791,94 +5899,94 @@ var adminStorageRoutes = {
5791
5899
  };
5792
5900
 
5793
5901
  // src/contracts/admin/users.ts
5794
- var import_zod_openapi71 = require("@hono/zod-openapi");
5902
+ var import_zod_openapi72 = require("@hono/zod-openapi");
5795
5903
 
5796
5904
  // src/schemas/admin/users.ts
5797
- var import_zod_openapi70 = require("@hono/zod-openapi");
5905
+ var import_zod_openapi71 = require("@hono/zod-openapi");
5798
5906
 
5799
5907
  // src/schemas/admin/_pager.ts
5800
- var import_zod_openapi69 = require("@hono/zod-openapi");
5801
- var AdminPagerSchema = import_zod_openapi69.z.object({
5802
- page: import_zod_openapi69.z.number(),
5803
- pagesCount: import_zod_openapi69.z.number(),
5804
- pages: import_zod_openapi69.z.array(import_zod_openapi69.z.number()),
5805
- total: import_zod_openapi69.z.number(),
5806
- previous: import_zod_openapi69.z.number().nullable(),
5807
- previousDots: import_zod_openapi69.z.boolean(),
5808
- next: import_zod_openapi69.z.number().nullable(),
5809
- 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()
5810
5918
  });
5811
5919
 
5812
5920
  // src/schemas/admin/users.ts
5813
- var ListAdminUsersRequestSchema = import_zod_openapi70.z.object({
5814
- q: import_zod_openapi70.z.string().optional(),
5921
+ var ListAdminUsersRequestSchema = import_zod_openapi71.z.object({
5922
+ q: import_zod_openapi71.z.string().optional(),
5815
5923
  /**
5816
5924
  * Optional numeric user-status filter (see `UserStatusEnum`). When set, only
5817
5925
  * users in that status are returned — used by the "user approval" queue
5818
5926
  * screen to list `REGISTERED` (= awaiting admin approval) users.
5819
5927
  */
5820
- status: import_zod_openapi70.z.coerce.number().int().optional(),
5821
- page: import_zod_openapi70.z.coerce.number().int().min(1).optional().default(1),
5822
- 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)
5823
5931
  });
5824
- var ListAdminUsersResponseSchema = import_zod_openapi70.z.object({
5825
- users: import_zod_openapi70.z.array(UserPublicSchema),
5932
+ var ListAdminUsersResponseSchema = import_zod_openapi71.z.object({
5933
+ users: import_zod_openapi71.z.array(UserPublicSchema),
5826
5934
  pager: AdminPagerSchema
5827
5935
  });
5828
- var SearchAdminUsersByEmailRequestSchema = import_zod_openapi70.z.object({
5829
- 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)
5830
5938
  });
5831
- var SearchAdminUsersByEmailResponseSchema = import_zod_openapi70.z.object({
5832
- users: import_zod_openapi70.z.array(UserPublicSchema)
5939
+ var SearchAdminUsersByEmailResponseSchema = import_zod_openapi71.z.object({
5940
+ users: import_zod_openapi71.z.array(UserPublicSchema)
5833
5941
  });
5834
- var AdminUserIdParamSchema = import_zod_openapi70.z.object({
5835
- id: import_zod_openapi70.z.string()
5942
+ var AdminUserIdParamSchema = import_zod_openapi71.z.object({
5943
+ id: import_zod_openapi71.z.string()
5836
5944
  });
5837
- var InviteUsersRequestSchema = import_zod_openapi70.z.object({
5838
- emailList: import_zod_openapi70.z.array(import_zod_openapi70.z.string().email()).min(1),
5839
- 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)
5840
5948
  });
5841
- var InvitedUserResultSchema = import_zod_openapi70.z.discriminatedUnion("status", [
5842
- import_zod_openapi70.z.object({
5843
- email: import_zod_openapi70.z.string(),
5844
- status: import_zod_openapi70.z.literal("created"),
5845
- 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()
5846
5954
  }),
5847
- import_zod_openapi70.z.object({
5848
- email: import_zod_openapi70.z.string(),
5849
- 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")
5850
5958
  }),
5851
- import_zod_openapi70.z.object({
5852
- email: import_zod_openapi70.z.string(),
5853
- 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")
5854
5962
  })
5855
5963
  ]);
5856
- var InviteUsersResponseSchema = import_zod_openapi70.z.object({
5857
- results: import_zod_openapi70.z.array(InvitedUserResultSchema)
5964
+ var InviteUsersResponseSchema = import_zod_openapi71.z.object({
5965
+ results: import_zod_openapi71.z.array(InvitedUserResultSchema)
5858
5966
  });
5859
- var EditAdminUserRequestSchema = import_zod_openapi70.z.object({
5860
- name: import_zod_openapi70.z.string().min(1),
5861
- 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()
5862
5970
  });
5863
- var AdminUserMutationResponseSchema = import_zod_openapi70.z.object({
5971
+ var AdminUserMutationResponseSchema = import_zod_openapi71.z.object({
5864
5972
  user: UserPublicSchema
5865
5973
  });
5866
- var ResetPasswordResponseSchema = import_zod_openapi70.z.object({
5974
+ var ResetPasswordResponseSchema = import_zod_openapi71.z.object({
5867
5975
  user: UserPublicSchema,
5868
- newPassword: import_zod_openapi70.z.string()
5976
+ newPassword: import_zod_openapi71.z.string()
5869
5977
  });
5870
- var UpdateAdminUserEmailRequestSchema = import_zod_openapi70.z.object({
5871
- email: import_zod_openapi70.z.string().email()
5978
+ var UpdateAdminUserEmailRequestSchema = import_zod_openapi71.z.object({
5979
+ email: import_zod_openapi71.z.string().email()
5872
5980
  });
5873
- var DeleteAdminUserResponseSchema = import_zod_openapi70.z.object({
5874
- deletedId: import_zod_openapi70.z.string()
5981
+ var DeleteAdminUserResponseSchema = import_zod_openapi71.z.object({
5982
+ deletedId: import_zod_openapi71.z.string()
5875
5983
  });
5876
- var PendingUsersCountResponseSchema = import_zod_openapi70.z.object({
5877
- 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()
5878
5986
  });
5879
5987
 
5880
5988
  // src/contracts/admin/users.ts
5881
- var listUsersRoute = (0, import_zod_openapi71.createRoute)({
5989
+ var listUsersRoute = (0, import_zod_openapi72.createRoute)({
5882
5990
  method: "get",
5883
5991
  path: "/admin/users",
5884
5992
  tags: ["admin.users"],
@@ -5906,7 +6014,7 @@ var listUsersRoute = (0, import_zod_openapi71.createRoute)({
5906
6014
  }
5907
6015
  }
5908
6016
  });
5909
- var searchUsersByEmailRoute = (0, import_zod_openapi71.createRoute)({
6017
+ var searchUsersByEmailRoute = (0, import_zod_openapi72.createRoute)({
5910
6018
  method: "get",
5911
6019
  path: "/admin/users/search",
5912
6020
  tags: ["admin.users"],
@@ -5934,7 +6042,7 @@ var searchUsersByEmailRoute = (0, import_zod_openapi71.createRoute)({
5934
6042
  }
5935
6043
  }
5936
6044
  });
5937
- var inviteUsersRoute = (0, import_zod_openapi71.createRoute)({
6045
+ var inviteUsersRoute = (0, import_zod_openapi72.createRoute)({
5938
6046
  method: "post",
5939
6047
  path: "/admin/users/invite",
5940
6048
  tags: ["admin.users"],
@@ -5968,7 +6076,7 @@ var inviteUsersRoute = (0, import_zod_openapi71.createRoute)({
5968
6076
  }
5969
6077
  }
5970
6078
  });
5971
- var editUserRoute = (0, import_zod_openapi71.createRoute)({
6079
+ var editUserRoute = (0, import_zod_openapi72.createRoute)({
5972
6080
  method: "patch",
5973
6081
  path: "/admin/users/{id}",
5974
6082
  tags: ["admin.users"],
@@ -6011,7 +6119,7 @@ var editUserRoute = (0, import_zod_openapi71.createRoute)({
6011
6119
  }
6012
6120
  }
6013
6121
  });
6014
- var makeAdminRoute = (0, import_zod_openapi71.createRoute)({
6122
+ var makeAdminRoute = (0, import_zod_openapi72.createRoute)({
6015
6123
  method: "put",
6016
6124
  path: "/admin/users/{id}/admin",
6017
6125
  tags: ["admin.users"],
@@ -6047,7 +6155,7 @@ var makeAdminRoute = (0, import_zod_openapi71.createRoute)({
6047
6155
  }
6048
6156
  }
6049
6157
  });
6050
- var removeFromAdminRoute = (0, import_zod_openapi71.createRoute)({
6158
+ var removeFromAdminRoute = (0, import_zod_openapi72.createRoute)({
6051
6159
  method: "delete",
6052
6160
  path: "/admin/users/{id}/admin",
6053
6161
  tags: ["admin.users"],
@@ -6083,7 +6191,7 @@ var removeFromAdminRoute = (0, import_zod_openapi71.createRoute)({
6083
6191
  }
6084
6192
  }
6085
6193
  });
6086
- var activateUserRoute = (0, import_zod_openapi71.createRoute)({
6194
+ var activateUserRoute = (0, import_zod_openapi72.createRoute)({
6087
6195
  method: "put",
6088
6196
  path: "/admin/users/{id}/status/active",
6089
6197
  tags: ["admin.users"],
@@ -6119,7 +6227,7 @@ var activateUserRoute = (0, import_zod_openapi71.createRoute)({
6119
6227
  }
6120
6228
  }
6121
6229
  });
6122
- var suspendUserRoute = (0, import_zod_openapi71.createRoute)({
6230
+ var suspendUserRoute = (0, import_zod_openapi72.createRoute)({
6123
6231
  method: "put",
6124
6232
  path: "/admin/users/{id}/status/suspended",
6125
6233
  tags: ["admin.users"],
@@ -6155,7 +6263,7 @@ var suspendUserRoute = (0, import_zod_openapi71.createRoute)({
6155
6263
  }
6156
6264
  }
6157
6265
  });
6158
- var resetPasswordRoute = (0, import_zod_openapi71.createRoute)({
6266
+ var resetPasswordRoute = (0, import_zod_openapi72.createRoute)({
6159
6267
  method: "post",
6160
6268
  path: "/admin/users/{id}/reset-password",
6161
6269
  tags: ["admin.users"],
@@ -6191,7 +6299,7 @@ var resetPasswordRoute = (0, import_zod_openapi71.createRoute)({
6191
6299
  }
6192
6300
  }
6193
6301
  });
6194
- var resendInviteRoute = (0, import_zod_openapi71.createRoute)({
6302
+ var resendInviteRoute = (0, import_zod_openapi72.createRoute)({
6195
6303
  method: "post",
6196
6304
  path: "/admin/users/{id}/resend-invite",
6197
6305
  tags: ["admin.users"],
@@ -6231,7 +6339,7 @@ var resendInviteRoute = (0, import_zod_openapi71.createRoute)({
6231
6339
  }
6232
6340
  }
6233
6341
  });
6234
- var updateUserEmailRoute = (0, import_zod_openapi71.createRoute)({
6342
+ var updateUserEmailRoute = (0, import_zod_openapi72.createRoute)({
6235
6343
  method: "put",
6236
6344
  path: "/admin/users/{id}/email",
6237
6345
  tags: ["admin.users"],
@@ -6274,7 +6382,7 @@ var updateUserEmailRoute = (0, import_zod_openapi71.createRoute)({
6274
6382
  }
6275
6383
  }
6276
6384
  });
6277
- var pendingUsersCountRoute = (0, import_zod_openapi71.createRoute)({
6385
+ var pendingUsersCountRoute = (0, import_zod_openapi72.createRoute)({
6278
6386
  method: "get",
6279
6387
  path: "/admin/users/pending-count",
6280
6388
  tags: ["admin.users"],
@@ -6299,7 +6407,7 @@ var pendingUsersCountRoute = (0, import_zod_openapi71.createRoute)({
6299
6407
  }
6300
6408
  }
6301
6409
  });
6302
- var deleteUserRoute = (0, import_zod_openapi71.createRoute)({
6410
+ var deleteUserRoute = (0, import_zod_openapi72.createRoute)({
6303
6411
  method: "delete",
6304
6412
  path: "/admin/users/{id}",
6305
6413
  tags: ["admin.users"],
@@ -6356,7 +6464,7 @@ var adminUsersRoutes = {
6356
6464
  };
6357
6465
 
6358
6466
  // src/client.ts
6359
- var import_zod_openapi72 = require("@hono/zod-openapi");
6467
+ var import_zod_openapi73 = require("@hono/zod-openapi");
6360
6468
  var import_client = require("hono/client");
6361
6469
  var stubUser = {
6362
6470
  id: "",
@@ -6615,7 +6723,7 @@ var stubListPlugins = { plugins: [] };
6615
6723
  var stubPluginConfig = { name: "", fields: [], values: {} };
6616
6724
  var stubUpdatePluginConfig = { ok: true, hotReloaded: false, reconfigureFailed: false };
6617
6725
  var stubClearRenderCache = { ok: true, clearedAt: "", removedCount: 0 };
6618
- var appAuthMeUserChain = new import_zod_openapi72.OpenAPIHono().openapi(
6726
+ var appAuthMeUserChain = new import_zod_openapi73.OpenAPIHono().openapi(
6619
6727
  appRoutes.getAppInfoRoute,
6620
6728
  (c) => c.json({ title: null, confidential: null, version: "", apiVersion: "v2", capabilities: [], canSelfRegister: true }, 200)
6621
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(
@@ -6635,54 +6743,38 @@ var appAuthMeUserChain = new import_zod_openapi72.OpenAPIHono().openapi(
6635
6743
  200
6636
6744
  )
6637
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));
6638
- 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));
6639
- 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));
6640
- 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));
6641
- 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));
6642
- 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));
6643
- 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));
6644
6752
  var createClient = (baseUrl, options = {}) => (0, import_client.hc)(baseUrl, {
6645
6753
  headers: options.headers,
6646
6754
  fetch: options.fetch
6647
6755
  });
6648
6756
 
6649
- // src/schemas/app-capabilities.ts
6650
- var STATIC_CAPABILITIES = [
6651
- "oauth",
6652
- // The oauth:* tags mirror GRANT_TYPES_SUPPORTED + the S256 PKCE method
6653
- // (schemas/oauth-endpoints.ts / the RFC 8414 discovery doc). Keep in sync.
6654
- "oauth:auth-code",
6655
- "oauth:device",
6656
- "oauth:pkce",
6657
- "pat",
6658
- "pages",
6659
- "comments",
6660
- "bookmarks",
6661
- "attachments",
6662
- "notifications"
6663
- ];
6664
- var API_SURFACE_VERSION = "v2";
6665
-
6666
6757
  // src/schemas/mail-token.ts
6667
- var import_zod_openapi73 = require("@hono/zod-openapi");
6668
- var MailTokenPurposeSchema = import_zod_openapi73.z.enum(["invite", "activate", "reset", "email-change"]);
6669
- 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({
6670
6761
  purpose: MailTokenPurposeSchema,
6671
- userId: import_zod_openapi73.z.string(),
6762
+ userId: import_zod_openapi74.z.string(),
6672
6763
  /** Target address. For `email-change` this is the NEW address. */
6673
- email: import_zod_openapi73.z.string().email(),
6764
+ email: import_zod_openapi74.z.string().email(),
6674
6765
  /**
6675
6766
  * For `email-change`: the account's email at issue time. The confirm
6676
6767
  * endpoint rejects the token unless it still matches, making the token
6677
6768
  * single-use (a stale token cannot revert a later change).
6678
6769
  */
6679
- fromEmail: import_zod_openapi73.z.string().email().optional(),
6770
+ fromEmail: import_zod_openapi74.z.string().email().optional(),
6680
6771
  // iat / exp are injected and verified by the JWT layer.
6681
- iat: import_zod_openapi73.z.number().optional(),
6682
- exp: import_zod_openapi73.z.number().optional()
6772
+ iat: import_zod_openapi74.z.number().optional(),
6773
+ exp: import_zod_openapi74.z.number().optional()
6683
6774
  });
6684
6775
  // Annotate the CommonJS export names for ESM import in node:
6685
6776
  0 && (module.exports = {
6777
+ ALL_CAPABILITIES,
6686
6778
  ALL_SCOPES,
6687
6779
  API_SURFACE_VERSION,
6688
6780
  AccessTokenSchema,
@@ -6721,6 +6813,8 @@ var MailTokenPayloadSchema = import_zod_openapi73.z.object({
6721
6813
  BacklinkSchema,
6722
6814
  BookmarkResponseSchema,
6723
6815
  BookmarkSchema,
6816
+ CapabilitySchema,
6817
+ ClaimPageLinkAccessResponseSchema,
6724
6818
  ClearRenderCacheResponseSchema,
6725
6819
  CollabForceReloadMessageSchema,
6726
6820
  CollabSaveErrorSchema,
@@ -6744,6 +6838,7 @@ var MailTokenPayloadSchema = import_zod_openapi73.z.object({
6744
6838
  DEVICE_CODE_GRANT_TYPE,
6745
6839
  DISCOVERY_SCOPES_SUPPORTED,
6746
6840
  DND_EXTRA_UPLOAD_MIME,
6841
+ DYNAMIC_CAPABILITIES,
6747
6842
  DeleteAdminUserResponseSchema,
6748
6843
  DeleteCommentRequestSchema,
6749
6844
  DeleteCommentResponseSchema,
@@ -6997,6 +7092,7 @@ var MailTokenPayloadSchema = import_zod_openapi73.z.object({
6997
7092
  backlinkRoutes,
6998
7093
  bookmarkRoutes,
6999
7094
  cancelDraftRoute,
7095
+ claimPageLinkAccessRoute,
7000
7096
  clearRenderCacheAllRoute,
7001
7097
  clearRenderCachePluginRoute,
7002
7098
  commentRoutes,