@h-ai/api-contract 0.1.0-alpha.76 → 1.0.0-beta.1
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/README.en.md +2 -0
- package/README.ja.md +2 -0
- package/README.md +2 -0
- package/dist/{chunk-RN3KGYTF.js → chunk-CXOK55BY.js} +11 -13
- package/dist/chunk-CXOK55BY.js.map +1 -0
- package/dist/iam/index.d.ts +72 -68
- package/dist/iam/index.js +1 -1
- package/dist/index.d.ts +42 -44
- package/dist/index.js +2 -2
- package/package.json +3 -3
- package/dist/chunk-RN3KGYTF.js.map +0 -1
package/README.en.md
CHANGED
|
@@ -21,6 +21,8 @@ Public HTTP API contracts for hai-framework, with oRPC contract + Zod as the sin
|
|
|
21
21
|
|
|
22
22
|
Payment creation inputs and outputs accept WeChat `jsapi`, Alipay `h5`, and Stripe `h5` only; WeChat requires `userId` (openid). App, Native, mini-program, and other combinations fail validation. Alipay returns `{ gateway, fields }` page parameters; creation success does not establish payment. See [Payment](../payment/README.en.md) for client handling.
|
|
23
23
|
|
|
24
|
+
User listing accepts `sortBy` (username/email/displayName/enabled/createdAt) and `sortDirection` (asc/desc) for header sorting before pagination.
|
|
25
|
+
|
|
24
26
|
## Getting started
|
|
25
27
|
|
|
26
28
|
### Quick start
|
package/README.ja.md
CHANGED
|
@@ -21,6 +21,8 @@ hai-framework の公開 HTTP API 契約パッケージ。oRPC contract + Zod を
|
|
|
21
21
|
|
|
22
22
|
支払い作成の入出力は WeChat `jsapi`・Alipay `h5`・Stripe `h5` のみ受け付け、WeChat は `userId`(openid)が必須です。App・Native・ミニプログラムなどは検証で拒否します。Alipay は `{ gateway, fields }` のページパラメーターを返し、作成成功は支払い完了を意味しません。クライアント処理は [Payment](../payment/README.ja.md) を参照してください。
|
|
23
23
|
|
|
24
|
+
ユーザー一覧は `sortBy`(username/email/displayName/enabled/createdAt)と `sortDirection`(asc/desc)でページ分割前に並べ替えます。
|
|
25
|
+
|
|
24
26
|
## 使い始める
|
|
25
27
|
|
|
26
28
|
### クイックスタート
|
package/README.md
CHANGED
|
@@ -21,6 +21,8 @@ hai-framework 的公共 HTTP API 契约包,用 oRPC contract 和 Zod 让前后
|
|
|
21
21
|
|
|
22
22
|
支付创建输入和输出仅接受微信 `jsapi`、支付宝 `h5`、Stripe `h5`;微信输入必填 `userId`(openid)。App、Native、小程序与其它组合会在输入校验时失败。支付宝输出是 `{ gateway, fields }` 页面参数,创建成功不代表支付完成;客户端处理见 [Payment](../payment/README.md)。
|
|
23
23
|
|
|
24
|
+
用户列表支持 `sortBy`(username/email/displayName/enabled/createdAt)和 `sortDirection`(asc/desc),供列头排序在分页前执行。
|
|
25
|
+
|
|
24
26
|
## 使用入门
|
|
25
27
|
|
|
26
28
|
### 快速开始
|
|
@@ -27,9 +27,8 @@ var IamUserSchema = z.object({
|
|
|
27
27
|
phone: z.string().optional(),
|
|
28
28
|
displayName: z.string().optional(),
|
|
29
29
|
avatarUrl: z.string().optional(),
|
|
30
|
-
enabled: z.boolean(),
|
|
31
30
|
accountType: z.enum(["permanent", "temporary"]).optional(),
|
|
32
|
-
accountStatus: z.enum(["active", "dormant", "closed"])
|
|
31
|
+
accountStatus: z.enum(["active", "dormant", "closed"]),
|
|
33
32
|
accountExpiresAt: z.coerce.date().nullable().optional(),
|
|
34
33
|
lastLoginAt: z.coerce.date().nullable().optional(),
|
|
35
34
|
mustChangePassword: z.boolean().optional(),
|
|
@@ -135,12 +134,13 @@ var IamUpdateCurrentUserInputSchema = z.object({
|
|
|
135
134
|
metadata: z.record(z.string(), z.unknown()).optional()
|
|
136
135
|
});
|
|
137
136
|
var IamListUsersInputSchema = PaginationQuerySchema.extend({
|
|
137
|
+
sortBy: z.enum(["username", "email", "displayName", "accountStatus", "createdAt"]).optional(),
|
|
138
|
+
sortDirection: z.enum(["asc", "desc"]).optional(),
|
|
138
139
|
roleCode: z.string().trim().min(1).max(100).optional(),
|
|
139
140
|
search: z.string().optional(),
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
var IamAdminCreateUserInputSchema = z.object({
|
|
141
|
+
accountStatus: z.enum(["active", "dormant", "closed"]).optional()
|
|
142
|
+
}).strict();
|
|
143
|
+
var IamAdminCreateUserInputSchema = z.strictObject({
|
|
144
144
|
accountType: z.enum(["permanent", "temporary"]).optional(),
|
|
145
145
|
accountStatus: z.enum(["active", "dormant", "closed"]).optional(),
|
|
146
146
|
accountExpiresAt: z.coerce.date().optional(),
|
|
@@ -150,11 +150,10 @@ var IamAdminCreateUserInputSchema = z.object({
|
|
|
150
150
|
password: z.string().min(1),
|
|
151
151
|
displayName: z.string().optional(),
|
|
152
152
|
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
153
|
-
roleIds: z.array(z.string()).optional()
|
|
154
|
-
enabled: z.boolean().optional()
|
|
153
|
+
roleIds: z.array(z.string()).optional()
|
|
155
154
|
});
|
|
156
|
-
var IamInviteUserInputSchema = IamAdminCreateUserInputSchema.omit({ password: true }).extend({
|
|
157
|
-
var IamAdminUpdateUserInputSchema = z.
|
|
155
|
+
var IamInviteUserInputSchema = IamAdminCreateUserInputSchema.omit({ password: true }).extend({ accountStatus: z.literal("active").optional() });
|
|
156
|
+
var IamAdminUpdateUserInputSchema = z.strictObject({
|
|
158
157
|
accountType: z.enum(["permanent", "temporary"]).optional(),
|
|
159
158
|
accountStatus: z.enum(["active", "dormant", "closed"]).optional(),
|
|
160
159
|
accountExpiresAt: z.coerce.date().nullable().optional(),
|
|
@@ -165,7 +164,6 @@ var IamAdminUpdateUserInputSchema = z.object({
|
|
|
165
164
|
displayName: z.string().optional(),
|
|
166
165
|
avatarUrl: z.string().optional(),
|
|
167
166
|
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
168
|
-
enabled: z.boolean().optional(),
|
|
169
167
|
roleIds: z.array(z.string()).optional()
|
|
170
168
|
});
|
|
171
169
|
var IamUserIdInputSchema = z.object({
|
|
@@ -272,5 +270,5 @@ var iamContract = {
|
|
|
272
270
|
};
|
|
273
271
|
|
|
274
272
|
export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamCaptchaChallengeSchema, IamChangePasswordInputSchema, IamConfirmPasswordResetInputSchema, IamCreateCaptchaInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamInviteUserInputSchema, IamLdapLoginInputSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPublicConfigSchema, IamReauthenticateInputSchema, IamReauthenticationProofSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRenewPasswordInputSchema, IamRequestPasswordResetInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamSessionErrorCodeSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema, iamContract };
|
|
275
|
-
//# sourceMappingURL=chunk-
|
|
276
|
-
//# sourceMappingURL=chunk-
|
|
273
|
+
//# sourceMappingURL=chunk-CXOK55BY.js.map
|
|
274
|
+
//# sourceMappingURL=chunk-CXOK55BY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/iam/iam-schemas.ts","../src/iam/iam-contract.ts"],"names":[],"mappings":";;;;AAYA,IAAM,kBAAA,GAAqB,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,IAAI,CAAA,CAAE,QAAA,EAAS;AAUzD,IAAM,2BAAA,GAA8B,CAAA,CAAE,MAAA,CAAO,EAAE,WAAW,CAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,YAAY,SAAA,EAAW,eAAA,EAAiB,eAAe,CAAC,GAAG;AAUtI,IAAM,yBAAA,GAA4B,EAAE,MAAA,CAAO;AAAA,EAChD,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,gBAAgB,CAAA;AAAA,EACrC,SAAA,EAAW,EAAE,MAAA,CAAO;AAAA,IAClB,WAAW,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,GAAG,EAAE,QAAA,EAAS;AAAA,IACxC,UAAA,EAAY,EAAE,MAAA,CAAO;AAAA,MACnB,WAAW,CAAA,CAAE,MAAA,GAAS,MAAA,CAAO,CAAA,KAAA,KAAS,UAAU,gBAAgB,CAAA;AAAA,MAChE,KAAA,EAAO,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,MAChC,IAAA,EAAM,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,MAC/B,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,GAAG,CAAA,CAAE,GAAA,CAAI,GAAK,CAAA;AAAA,MACzC,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,EAAE,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA;AAAA,MAC1C,SAAA,EAAW,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,MACpC,cAAc,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,GAAG,EAAE,QAAA,EAAS;AAAA,MAC3C,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,EAAO,EAAG,EAAE,MAAA,EAAO,EAAG,CAAA,CAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA,CAAE,QAAA;AAAS,KAC/F;AAAA,GACF;AACH,CAAC;AAkBM,IAAM,aAAA,GAAgB,EAAE,MAAA,CAAO;AAAA,EACpC,EAAA,EAAI,EAAE,MAAA,EAAO;AAAA,EACb,QAAA,EAAU,EAAE,MAAA,EAAO;AAAA,EACnB,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,WAAA,EAAa,EAAE,IAAA,CAAK,CAAC,aAAa,WAAW,CAAC,EAAE,QAAA,EAAS;AAAA,EACzD,eAAe,CAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,SAAA,EAAW,QAAQ,CAAC,CAAA;AAAA,EACrD,kBAAkB,CAAA,CAAE,MAAA,CAAO,MAAK,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACtD,aAAa,CAAA,CAAE,MAAA,CAAO,MAAK,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACjD,kBAAA,EAAoB,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACzC,aAAA,EAAe,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACpC,aAAA,EAAe,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACpC,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC9C,CAAC;AAgBM,IAAM,kBAAA,GAAqB,EAAE,MAAA,CAAO;AAAA,EACzC,WAAA,EAAa,EAAE,MAAA,EAAO;AAAA,EACtB,YAAA,EAAc,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAClC,SAAA,EAAW,EAAE,MAAA,EAAO;AAAA,EACpB,SAAA,EAAW,CAAA,CAAE,OAAA,CAAQ,QAAQ;AAC/B,CAAC;AAeM,IAAM,yBAAA,GAA4B,EAAE,MAAA,CAAO;AAAA;AAAA,EAEhD,uBAAuB,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EAClD,uBAAuB,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EAClD,gBAAA,EAAkB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACtC,gBAAA,EAAkB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACtC,cAAA,EAAgB,EAAE,OAAA,EAAQ;AAAA,EAC1B,WAAA,EAAa,EAAE,OAAA;AACjB,CAAC;AAyBM,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,IAAA,EAAM,aAAA;AAAA,EACN,MAAA,EAAQ,kBAAA;AAAA,EACR,KAAA,EAAO,EAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EACrC,WAAA,EAAa,EAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC3C,UAAA,EAAY,0BAA0B,QAAA;AACxC,CAAC;AAwBM,IAAM,oBAAA,GAAuB,cAAc,MAAA,CAAO;AAAA,EACvD,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA;AAAA,EACzB,WAAA,EAAa,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAQ;AACjC,CAAC;AAeM,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,cAAA,EAAgB,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;AAAA,EACpD,OAAA,EAAS,kBAAA;AAAA,EACT,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC5B,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC5B,CAAC;AAUM,IAAM,yBAAA,GAA4B,CAAA,CAAE,IAAA,CAAK,CAAC,aAAA,EAAe,eAAe,aAAA,EAAe,aAAA,EAAe,aAAA,EAAe,aAAa,CAAC;AAenI,IAAM,uBAAA,GAA0B,CAAA,CAAE,MAAA,CAAO,EAAE,UAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,GAAA,CAAI,CAAC,CAAA,EAAG,QAAA,EAAU,EAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,OAAA,EAAS,kBAAA,EAAoB,cAAA,EAAgB,EAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,EAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,IAAY;AAahM,IAAM,kCAAA,GAAqC,CAAA,CAAE,MAAA,CAAO,EAAE,YAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,GAAA,CAAI,CAAC,CAAA,EAAG,OAAA,EAAS,oBAAoB;AAczH,IAAM,qCAAqC,CAAA,CAAE,MAAA,CAAO,EAAE,KAAA,EAAO,CAAA,CAAE,QAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,aAAa,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,GAAG;AAUhH,IAAM,2BAAA,GAA8B,CAAA,CAAE,MAAA,CAAO,EAAE,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,EAAK,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,OAAA,EAAS,oBAAoB;AAU/K,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO,EAAE,UAAU,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,WAAW,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,EAAK,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,EAAG;AAU3H,IAAM,8BAAA,GAAiC,CAAA,CAAE,MAAA,CAAO,EAAE,QAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,SAAA,EAAW,CAAA,CAAE,MAAA,IAAU;AAkDpG,IAAM,qBAAA,GAAwB,EAAE,MAAA,CAAO;AAAA,EAC5C,OAAA,EAAS,CAAA,CAAE,MAAA,CAAO,EAAE,SAAS,CAAA,CAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,OAAA,CAAQ,EAAE,OAAA,EAAS,OAAO,CAAA;AAAA,EACtE,kBAAkB,CAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,UAAA,EAAY,CAAA,CAAE,MAAM,CAAA,CAAE,MAAA,EAAQ,CAAA,EAAG,EAAE,QAAA,EAAS;AAAA,EAC/F,kBAAA,EAAoB,CAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,QAAA,EAAS;AAAA,EAChE,QAAA,EAAU,EAAE,MAAA,CAAO,EAAE,WAAW,CAAA,CAAE,MAAA,EAAO,EAAG,SAAA,EAAW,CAAA,CAAE,MAAA,IAAU,gBAAA,EAAkB,CAAA,CAAE,OAAA,EAAQ,EAAG,gBAAA,EAAkB,CAAA,CAAE,SAAQ,EAAG,aAAA,EAAe,CAAA,CAAE,OAAA,EAAQ,EAAG,kBAAA,EAAoB,EAAE,OAAA,EAAQ,EAAG,gBAAgB,CAAA,CAAE,MAAA,IAAU,mBAAA,EAAqB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,EAAG,qBAAqB,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS,EAAG,oBAAA,EAAsB,EAAE,OAAA,EAAQ,CAAE,QAAA,EAAS,EAAG,CAAA;AAAA,EACjW,QAAA,EAAU,EAAE,MAAA,CAAO,EAAE,SAAS,CAAA,CAAE,OAAA,IAAW,CAAA;AAAA,EAC3C,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,EAAE,QAAA,EAAU,EAAE,OAAA,EAAQ,EAAG,GAAA,EAAK,CAAA,CAAE,OAAA,EAAQ,EAAG,MAAM,CAAA,CAAE,OAAA,EAAQ,EAAG,KAAA,EAAO,CAAA,CAAE,OAAA,IAAW,GAAA,EAAK,CAAA,CAAE,OAAA,EAAQ,EAAG,CAAA;AAAA,EACpH,eAAe,CAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,IAAA,EAAM,CAAA,CAAE,KAAK,CAAC,OAAA,EAAS,OAAO,CAAC,GAAG,CAAA;AAAA,EAClF,GAAA,EAAK,CAAA,CAAE,MAAA,CAAO,EAAE,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,EAAG,cAAA,EAAgB,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA;AAAA,EAChE,UAAA,EAAY,yBAAA;AAAA,EACZ,EAAA,EAAI,EAAE,MAAA,CAAO,EAAE,SAAS,CAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,OAAO,CAAC,GAAG,KAAA,EAAO,CAAA,CAAE,QAAO,CAAE,QAAA,IAAY,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,EAAG,YAAY,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,EAAG,WAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,EAAG,OAAA,EAAS,EAAE,MAAA,EAAO,CAAE,UAAS,EAAG,eAAA,EAAiB,EAAE,MAAA,EAAO,CAAE,QAAA,EAAS,EAAG,CAAA;AAAA,EAC/P,OAAA,EAAS,CAAA,CAAE,MAAA,CAAO,EAAE,QAAQ,CAAA,CAAE,MAAA,EAAO,EAAG,aAAA,EAAe,EAAE,OAAA,EAAQ,CAAE,OAAA,CAAQ,KAAK,GAAG;AACrF,CAAC;AAeM,IAAM,sBAAA,GAAyB,EAAE,MAAA,CAAO;AAAA,EAC7C,cAAA,EAAgB,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;AAAA,EACpD,OAAA,EAAS,kBAAA;AAAA,EACT,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC5B,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AACxB,CAAC;AAcM,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EAC3C,aAAa,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA;AACjC,CAAC;AAcM,IAAM,qBAAA,GAAwB,EAAE,MAAA,CAAO;AAAA,EAC5C,OAAA,EAAS,kBAAA;AAAA,EACT,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC9B,CAAC;AAcM,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EAC3C,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA;AACtB,CAAC;AAcM,IAAM,0BAAA,GAA6B,EAAE,MAAA,CAAO;AAAA,EACjD,YAAA,EAAc,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAChC,CAAC;AAkBM,IAAM,yBAAA,GAA4B,EAAE,MAAA,CAAO;AAAA,EAChD,MAAA,EAAQ;AACV,CAAC;AAeM,IAAM,sBAAA,GAAyB,EAAE,MAAA,CAAO;AAAA,EAC7C,OAAA,EAAS,kBAAA;AAAA,EACT,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC1B,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC1B,OAAO,CAAA,CAAE,MAAA,EAAO,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,EACnC,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC9C,CAAC;AAeM,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EACnD,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC7B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC/B,CAAC;AAYM,IAAM,+BAAA,GAAkC,EAAE,MAAA,CAAO;AAAA,EACtD,UAAU,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EACrC,OAAO,CAAA,CAAE,MAAA,EAAO,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,EACnC,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC9C,CAAC;AAYM,IAAM,uBAAA,GAA0B,sBAAsB,MAAA,CAAO;AAAA,EAClE,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,UAAA,EAAY,OAAA,EAAS,aAAA,EAAe,eAAA,EAAiB,WAAW,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAC5F,aAAA,EAAe,EAAE,IAAA,CAAK,CAAC,OAAO,MAAM,CAAC,EAAE,QAAA,EAAS;AAAA,EAChD,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,EAAK,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;AAAA,EACrD,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,aAAA,EAAe,EAAE,IAAA,CAAK,CAAC,UAAU,SAAA,EAAW,QAAQ,CAAC,CAAA,CAAE,QAAA;AACzD,CAAC,EAAE,MAAA;AAeI,IAAM,6BAAA,GAAgC,EAAE,YAAA,CAAa;AAAA,EAC1D,WAAA,EAAa,EAAE,IAAA,CAAK,CAAC,aAAa,WAAW,CAAC,EAAE,QAAA,EAAS;AAAA,EACzD,aAAA,EAAe,EAAE,IAAA,CAAK,CAAC,UAAU,SAAA,EAAW,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAChE,gBAAA,EAAkB,CAAA,CAAE,MAAA,CAAO,IAAA,GAAO,QAAA,EAAS;AAAA,EAC3C,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC1B,OAAO,CAAA,CAAE,MAAA,EAAO,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,EACnC,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC1B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS;AAAA,EACrD,SAAS,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,EAAE,QAAA;AAC/B,CAAC;AAUM,IAAM,2BAA2B,6BAAA,CAA8B,IAAA,CAAK,EAAE,QAAA,EAAU,MAAM,CAAA,CAAE,MAAA,CAAO,EAAE,eAAe,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA,CAAE,QAAA,IAAY;AAwBhJ,IAAM,6BAAA,GAAgC,EAAE,YAAA,CAAa;AAAA,EAC1D,WAAA,EAAa,EAAE,IAAA,CAAK,CAAC,aAAa,WAAW,CAAC,EAAE,QAAA,EAAS;AAAA,EACzD,aAAA,EAAe,EAAE,IAAA,CAAK,CAAC,UAAU,SAAA,EAAW,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAChE,kBAAkB,CAAA,CAAE,MAAA,CAAO,MAAK,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACtD,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACpB,UAAU,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EACrC,OAAO,CAAA,CAAE,MAAA,EAAO,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,EACnC,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS;AAAA,EACrD,SAAS,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,EAAE,QAAA;AAC/B,CAAC;AAcM,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EAC3C,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AACtB,CAAC;AAeM,IAAM,gCAAA,GAAmC,EAAE,MAAA,CAAO;AAAA,EACvD,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACpB,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC/B,CAAC;AAkBM,IAAM,aAAA,GAAgB,EAAE,MAAA,CAAO;AAAA,EACpC,EAAA,EAAI,EAAE,MAAA,EAAO;AAAA,EACb,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAU,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC/B,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA;AACtB,CAAC;AAeM,IAAM,wBAAA,GAA2B,EAAE,MAAA,CAAO;AAAA,EAC/C,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAU,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACxB,CAAC;AAcM,IAAM,wBAAA,GAA2B,EAAE,MAAA,CAAO;AAAA,EAC/C,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACpB,MAAM,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EACjC,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAC1B,CAAC;AAYM,IAAM,0BAA0B,CAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,KAAA,EAAO,QAAQ,CAAC;AAkBhE,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,mBAAA,EAAqB,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,GAAS,IAAA,EAAK,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAC,CAAA,CAAE,GAAA,CAAI,GAAI,CAAA,CAAE,OAAA,GAAU,SAAA,CAAU,CAAA,KAAA,KAAS,KAAA,IAAS,EAAE,CAAA;AAAA,EAClH,EAAA,EAAI,EAAE,MAAA,EAAO;AAAA,EACb,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,IAAA,EAAM,wBAAwB,QAAA,EAAS;AAAA,EACvC,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA;AACtB,CAAC;AAYM,IAAM,6BAAA,GAAgC,sBAAsB,MAAA,CAAO;AAAA,EACxE,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,IAAA,EAAM,wBAAwB,QAAA;AAChC,CAAC;AAeM,IAAM,8BAAA,GAAiC,EAAE,MAAA,CAAO;AAAA,EACrD,mBAAA,EAAqB,EAAE,KAAA,CAAM,CAAA,CAAE,QAAO,CAAE,IAAA,GAAO,GAAA,CAAI,CAAC,EAAE,GAAA,CAAI,GAAG,CAAC,CAAA,CAAE,GAAA,CAAI,GAAI,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EACpF,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,IAAA,EAAM,wBAAwB,QAAA;AAChC,CAAC;;;ACttBD,IAAM,sBAAA,GAAyB,gBAAgB,mBAAmB,CAAA;AAClE,IAAM,gBAAA,GAAmB,gBAAgB,aAAa,CAAA;AACtD,IAAM,gBAAA,GAAmB,gBAAgB,aAAa,CAAA;AAY/C,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA,CAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,eAAA,EAAiB,WAAA,EAAa,wBAAA,EAA0B,OAAA,EAAS,uCAAA,EAAyC,IAAA,EAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,CAC3K,KAAA,CAAM,2BAA2B,CAAA,CACjC,MAAA,CAAO,eAAA,CAAgB,yBAAyB,CAAC,CAAA;AAAA,IACpD,cAAA,EAAgB,KAAA,CAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,sBAAA,EAAwB,WAAA,EAAa,yBAAA,EAA2B,OAAA,EAAS,qDAAA,EAAuD,IAAA,EAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,CAClM,KAAA,CAAM,4BAA4B,CAAA,CAClC,MAAA,CAAO,eAAA,CAAgB,8BAA8B,CAAC,CAAA;AAAA,IACzD,YAAA,EAAc,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,cAAA,EAAgB,WAAA,EAAa,uBAAA,EAAyB,OAAA,EAAS,qCAAA,EAAuC,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,CACrK,OAAO,eAAA,CAAgB,qBAAA,CAAsB,QAAA,EAAU,CAAC,CAAA;AAAA,IAC3D,aAAA,EAAe,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,sBAAA,EAAwB,WAAA,EAAa,wBAAA,EAA0B,OAAA,EAAS,oCAAA,EAAsC,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC/K,KAAA,CAAM,2BAA2B,CAAA,CACjC,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,aAAA,EAAe,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,kBAAA,EAAoB,WAAA,EAAa,wBAAA,EAA0B,OAAA,EAAS,YAAA,EAAc,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EACnJ,KAAA,CAAM,uBAAuB,CAAA,CAC7B,MAAA,CAAO,sBAAsB,CAAA;AAAA,IAChC,oBAAA,EAAsB,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,8BAAA,EAAgC,WAAA,EAAa,+BAAA,EAAiC,OAAA,EAAS,wBAAA,EAA0B,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EACzL,KAAA,CAAM,kCAAkC,CAAA,CACxC,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,oBAAA,EAAsB,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,8BAAA,EAAgC,WAAA,EAAa,+BAAA,EAAiC,OAAA,EAAS,wBAAA,EAA0B,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EACzL,KAAA,CAAM,kCAAkC,CAAA,CACxC,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,KAAA,EAAO,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,aAAA,EAAe,WAAA,EAAa,gBAAA,EAAkB,OAAA,EAAS,gBAAA,EAAkB,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAClI,KAAA,CAAM,mBAAmB,CAAA,CACzB,MAAA,CAAO,sBAAsB,CAAA;AAAA,IAChC,YAAA,EAAc,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,uBAAA,EAAyB,OAAA,EAAS,WAAA,EAAa,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC/I,KAAA,CAAM,sBAAsB,CAAA,CAC5B,MAAA,CAAO,sBAAsB,CAAA;AAAA,IAChC,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,cAAA,EAAgB,WAAA,EAAa,iBAAA,EAAmB,OAAA,EAAS,QAAA,EAAU,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC7H,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,YAAA,EAAc,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,qBAAA,EAAuB,WAAA,EAAa,uBAAA,EAAyB,OAAA,EAAS,gEAAA,EAAkE,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EACxM,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,WAAA,EAAa,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,UAAA,EAAY,aAAa,sBAAA,EAAwB,OAAA,EAAS,qCAAqC,IAAA,EAAM,CAAC,OAAO,MAAM,CAAA,EAAG,CAAA,CAC7J,MAAA,CAAO,eAAA,CAAgB,oBAAoB,CAAC,CAAA;AAAA,IAC/C,OAAA,EAAS,KAAA,CAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,eAAA,EAAiB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,sBAAA,EAAwB,IAAA,EAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,CAC9I,KAAA,CAAM,0BAA0B,CAAA,CAChC,MAAA,CAAO,eAAA,CAAgB,yBAAyB,CAAC,CAAA;AAAA,IACpD,OAAA,EAAS,KAAA,CAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,gBAAA,EAAkB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,UAAA,EAAY,IAAA,EAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,CACnI,KAAA,CAAM,qBAAqB,CAAA,CAC3B,MAAA,CAAO,eAAA,CAAgB,oBAAoB,CAAC,CAAA;AAAA,IAC/C,QAAA,EAAU,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,gBAAA,EAAkB,WAAA,EAAa,mBAAA,EAAqB,OAAA,EAAS,oBAAA,EAAsB,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC/I,KAAA,CAAM,sBAAsB,CAAA,CAC5B,MAAA,CAAO,sBAAsB,CAAA;AAAA,IAChC,cAAA,EAAgB,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,uBAAA,EAAyB,WAAA,EAAa,yBAAA,EAA2B,OAAA,EAAS,8BAAA,EAAgC,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC5K,KAAA,CAAM,4BAA4B,CAAA,CAClC,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,iBAAA,EAAmB,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,UAAA,EAAY,WAAA,EAAa,4BAAA,EAA8B,OAAA,EAAS,qBAAA,EAAuB,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC3J,KAAA,CAAM,+BAA+B,CAAA,CACrC,MAAA,CAAO,gBAAgB;AAAA,GAC5B;AAAA,EACA,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,mBAAA,EAAqB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,+CAAA,EAAiD,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EAC3K,KAAA,CAAM,wBAAwB,CAAA,CAC9B,MAAA,CAAO,gBAAgB,CAAA;AAAA,IAC1B,IAAA,EAAM,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,YAAA,EAAc,WAAA,EAAa,gBAAA,EAAkB,OAAA,EAAS,YAAA,EAAc,IAAA,EAAM,CAAC,OAAO,OAAO,CAAA,EAAG,CAAA,CAC5H,KAAA,CAAM,uBAAuB,CAAA,CAC7B,MAAA,CAAO,eAAA,CAAgB,eAAA,CAAgB,aAAa,CAAC,CAAC,CAAA;AAAA,IACzD,GAAA,EAAK,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,eAAA,EAAiB,OAAA,EAAS,UAAA,EAAY,IAAA,EAAM,CAAC,OAAO,OAAO,CAAA,EAAG,CAAA,CAC7H,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,eAAA,CAAgB,aAAA,CAAc,QAAA,EAAU,CAAC,CAAA;AAAA,IACnD,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,YAAA,EAAc,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EAClI,KAAA,CAAM,6BAA6B,CAAA,CACnC,MAAA,CAAO,gBAAgB,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EACtI,KAAA,CAAM,6BAA6B,CAAA,CACnC,MAAA,CAAO,gBAAgB,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,UAAU,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EACzI,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,aAAA,EAAe,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,gCAAA,EAAkC,WAAA,EAAa,yBAAA,EAA2B,OAAA,EAAS,qBAAA,EAAuB,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EAC5K,KAAA,CAAM,gCAAgC,CAAA,CACtC,MAAA,CAAO,mBAAmB;AAAA,GAC/B;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,YAAA,EAAc,WAAA,EAAa,gBAAA,EAAkB,OAAA,EAAS,YAAA,EAAc,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,CAAA,CAC5H,OAAO,eAAA,CAAgB,eAAA,CAAgB,aAAa,CAAC,CAAC,CAAA;AAAA,IACzD,GAAA,EAAK,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,eAAA,EAAiB,OAAA,EAAS,UAAA,EAAY,IAAA,EAAM,CAAC,OAAO,OAAO,CAAA,EAAG,CAAA,CAC7H,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,eAAA,CAAgB,aAAA,CAAc,QAAA,EAAU,CAAC,CAAA;AAAA,IACnD,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,YAAA,EAAc,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EAClI,KAAA,CAAM,wBAAwB,CAAA,CAC9B,MAAA,CAAO,gBAAgB,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EACtI,KAAA,CAAM,wBAAwB,CAAA,CAC9B,MAAA,CAAO,gBAAgB,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,UAAU,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EACzI,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,mBAAmB;AAAA,GAC/B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,sBAAA,EAAwB,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,4CAAA,EAA8C,WAAA,EAAa,qCAAA,EAAuC,OAAA,EAAS,qCAAA,EAAuC,IAAA,EAAM,CAAC,KAAA,EAAO,aAAa,CAAA,EAAG,CAAA,CAClO,KAAA,CAAM,mBAAA,CAAoB,IAAA,CAAK,EAAE,EAAA,EAAI,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,CAAC,CAAA,CACvE,OAAO,mBAAmB,CAAA;AAAA,IAC7B,IAAA,EAAM,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,kBAAA,EAAoB,WAAA,EAAa,sBAAA,EAAwB,OAAA,EAAS,kBAAA,EAAoB,IAAA,EAAM,CAAC,OAAO,aAAa,CAAA,EAAG,CAAA,CACpJ,KAAA,CAAM,6BAA6B,CAAA,CACnC,MAAA,CAAO,eAAA,CAAgB,eAAA,CAAgB,mBAAmB,CAAC,CAAC,CAAA;AAAA,IAC/D,GAAA,EAAK,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,uBAAA,EAAyB,WAAA,EAAa,qBAAA,EAAuB,OAAA,EAAS,gBAAA,EAAkB,IAAA,EAAM,CAAC,OAAO,aAAa,CAAA,EAAG,CAAA,CACrJ,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,eAAA,CAAgB,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAA;AAAA,IACzD,MAAA,EAAQ,KAAA,CAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,kBAAA,EAAoB,WAAA,EAAa,wBAAA,EAA0B,OAAA,EAAS,mBAAA,EAAqB,IAAA,EAAM,CAAC,KAAA,EAAO,aAAa,CAAA,EAAG,CAAA,CAC1J,KAAA,CAAM,8BAA8B,CAAA,CACpC,MAAA,CAAO,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IAC9C,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,UAAU,IAAA,EAAM,uBAAA,EAAyB,WAAA,EAAa,wBAAA,EAA0B,OAAA,EAAS,mBAAA,EAAqB,MAAM,CAAC,KAAA,EAAO,aAAa,CAAA,EAAG,EACjK,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,mBAAmB;AAAA;AAEjC","file":"chunk-CXOK55BY.js","sourcesContent":["/**\n * @h-ai/api-contract — IAM 领域 Schema\n *\n * 包含用户、Token、角色、权限以及相关 input/data 的 Zod Schema 定义。\n * 一次性输出包装在 contract 中内联,仅保留跨接口、跨层复用的数据结构。\n * @module iam-schemas\n */\n\nimport type { HaiResult } from '@h-ai/core'\nimport { z } from 'zod'\nimport { PaginationQuerySchema } from '../common/pagination-schemas.js'\n\nconst captchaProofSchema = z.string().min(1).max(4096).optional()\n\n/**\n * 交互挑战生成入参,证明只能用于指定入口。\n * @example\n * ```ts\n * import { IamCreateCaptchaInputSchema } from '@h-ai/api-contract'\n * const input = IamCreateCaptchaInputSchema.parse({ operation: 'login' })\n * ```\n */\nexport const IamCreateCaptchaInputSchema = z.object({ operation: z.enum(['login', 'register', 'sendOtp', 'passwordReset', 'renewPassword']) })\n\n/**\n * 自托管 ALTCHA 可公开挑战;不会返回签名秘密。\n * @example\n * ```ts\n * import { IamCaptchaChallengeSchema } from '@h-ai/api-contract'\n * function parseResponse(value: unknown) { return IamCaptchaChallengeSchema.parse(value) }\n * ```\n */\nexport const IamCaptchaChallengeSchema = z.object({\n id: z.string().regex(/^[a-f0-9]{64}$/),\n challenge: z.object({\n signature: z.string().max(256).optional(),\n parameters: z.object({\n algorithm: z.string().refine(value => value === 'PBKDF2/SHA-256'),\n nonce: z.string().min(1).max(256),\n salt: z.string().min(1).max(256),\n cost: z.number().int().min(100).max(50000),\n keyLength: z.number().int().min(16).max(64),\n keyPrefix: z.string().min(1).max(128),\n keySignature: z.string().max(256).optional(),\n data: z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(),\n }),\n }),\n})\n\n/**\n * 用户基础信息 Schema。\n * @example\n * ```ts\n * import { IamUserSchema } from '@h-ai/api-contract'\n *\n * const value = IamUserSchema.parse({\n * id: 'example-1',\n * username: 'alice',\n * accountStatus: 'active',\n * createdAt: null,\n * updatedAt: null\n * })\n * void value\n * ```\n */\nexport const IamUserSchema = z.object({\n id: z.string(),\n username: z.string(),\n email: z.string().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n accountType: z.enum(['permanent', 'temporary']).optional(),\n accountStatus: z.enum(['active', 'dormant', 'closed']),\n accountExpiresAt: z.coerce.date().nullable().optional(),\n lastLoginAt: z.coerce.date().nullable().optional(),\n mustChangePassword: z.boolean().optional(),\n emailVerified: z.boolean().optional(),\n phoneVerified: z.boolean().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/**\n * Token 对 Schema。\n * @example\n * ```ts\n * import { IamTokenPairSchema } from '@h-ai/api-contract'\n *\n * const value = IamTokenPairSchema.parse({\n * accessToken: 'example-only-access',\n * expiresIn: 0,\n * tokenType: 'Bearer'\n * })\n * void value\n * ```\n */\nexport const IamTokenPairSchema = z.object({\n accessToken: z.string(),\n refreshToken: z.string().optional(),\n expiresIn: z.number(),\n tokenType: z.literal('Bearer'),\n})\n\n/**\n * 协议展示 Schema。\n * @example\n * ```ts\n * import { IamAgreementDisplaySchema } from '@h-ai/api-contract'\n *\n * const value = IamAgreementDisplaySchema.parse({\n * showOnRegister: true,\n * showOnLogin: true\n * })\n * void value\n * ```\n */\nexport const IamAgreementDisplaySchema = z.object({\n /** 配置中的 Markdown 原文由客户端安全渲染。 */\n userAgreementMarkdown: z.string().min(1).optional(),\n privacyPolicyMarkdown: z.string().min(1).optional(),\n userAgreementUrl: z.string().optional(),\n privacyPolicyUrl: z.string().optional(),\n showOnRegister: z.boolean(),\n showOnLogin: z.boolean(),\n})\n\n/**\n * 登录结果业务数据 Schema。\n * @example\n * ```ts\n * import { IamAuthResultSchema } from '@h-ai/api-contract'\n *\n * const value = IamAuthResultSchema.parse({\n * user: {\n * id: 'example-1',\n * username: 'alice',\n * accountStatus: 'active',\n * createdAt: null,\n * updatedAt: null\n * },\n * tokens: {\n * accessToken: 'example-only-access',\n * expiresIn: 0,\n * tokenType: 'Bearer'\n * }\n * })\n * void value\n * ```\n */\nexport const IamAuthResultSchema = z.object({\n user: IamUserSchema,\n tokens: IamTokenPairSchema,\n roles: z.array(z.string()).default([]),\n permissions: z.array(z.string()).default([]),\n agreements: IamAgreementDisplaySchema.optional(),\n})\n\n/**\n * 当前会话用户信息;包含服务端重新校验后的角色与权限快照。\n * @example\n * ```ts\n * import { IamCurrentUserSchema } from '@h-ai/api-contract'\n *\n * const value = IamCurrentUserSchema.parse({\n * id: 'example-1',\n * username: 'alice',\n * accountStatus: 'active',\n * createdAt: null,\n * updatedAt: null,\n * roles: [\n * 'example'\n * ],\n * permissions: [\n * 'example'\n * ]\n * })\n * void value\n * ```\n */\nexport const IamCurrentUserSchema = IamUserSchema.extend({\n roles: z.array(z.string()),\n permissions: z.array(z.string()),\n})\n\n/**\n * 密码登录入参 Schema。\n * @example\n * ```ts\n * import { IamLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamLoginInputSchema.parse({\n * identifier: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamLoginInputSchema = z.object({\n expectedUserId: z.string().min(1).max(200).optional(),\n captcha: captchaProofSchema,\n identifier: z.string().min(1),\n password: z.string().min(1),\n})\n\n/**\n * 可以尝试刷新或恢复登录的IAM会话错误码;密码错误、初始/过期改密与操作二次认证不属于会话恢复。\n * @example\n * ```ts\n * import { IamSessionErrorCodeSchema } from '@h-ai/api-contract'\n * const expired = IamSessionErrorCodeSchema.safeParse('hai:iam:103').success\n * ```\n */\nexport const IamSessionErrorCodeSchema = z.enum(['hai:iam:101', 'hai:iam:102', 'hai:iam:103', 'hai:iam:105', 'hai:iam:106', 'hai:iam:107'])\n\n/**\n * LDAP 登录与密码找回入参。\n * @example\n * ```ts\n * import { IamLdapLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamLdapLoginInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamLdapLoginInputSchema = z.object({ username: z.string().trim().min(1), password: z.string().min(1), captcha: captchaProofSchema, expectedUserId: z.string().min(1).max(200).optional() })\n/**\n * IamRequestPasswordResetInput 数据的运行时 Zod 校验约束。\n * @example\n * ```ts\n * import { IamRequestPasswordResetInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamRequestPasswordResetInputSchema.parse({\n * identifier: 'alice'\n * })\n * void value\n * ```\n */\nexport const IamRequestPasswordResetInputSchema = z.object({ identifier: z.string().trim().min(1), captcha: captchaProofSchema })\n/**\n * IamConfirmPasswordResetInput 数据的运行时 Zod 校验约束。\n * @example\n * ```ts\n * import { IamConfirmPasswordResetInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamConfirmPasswordResetInputSchema.parse({\n * token: 'example-only-token',\n * newPassword: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamConfirmPasswordResetInputSchema = z.object({ token: z.string().min(1), newPassword: z.string().min(1) })\n\n/**\n * 无普通会话的首次或过期改密;必须重新验证原密码。\n * @example\n * ```ts\n * import { IamRenewPasswordInputSchema } from '@h-ai/api-contract'\n * const input = IamRenewPasswordInputSchema.parse({ identifier: 'alice', password: 'Initial123!', newPassword: 'Chosen456!' })\n * ```\n */\nexport const IamRenewPasswordInputSchema = z.object({ identifier: z.string().trim().min(1), password: z.string().min(1), newPassword: z.string().min(1), captcha: captchaProofSchema })\n\n/**\n * 对当前会话的指定操作重新鉴别;操作本身仍需独立授权。\n * @example\n * ```ts\n * import { IamReauthenticateInputSchema } from '@h-ai/api-contract'\n * const input = IamReauthenticateInputSchema.parse({ password: 'ChosenPassword123!', operation: 'iam.users.delete' })\n * ```\n */\nexport const IamReauthenticateInputSchema = z.object({ password: z.string().min(1), operation: z.string().trim().min(1).max(128) })\n\n/**\n * 短期、用途绑定的单次操作证明,不能持久化到浏览器存储。\n * @example\n * ```ts\n * import { IamReauthenticationProofSchema } from '@h-ai/api-contract'\n * const proof = IamReauthenticationProofSchema.parse({ ticket: 'example-only-ticket', expiresAt: Date.now() + 300000 })\n * ```\n */\nexport const IamReauthenticationProofSchema = z.object({ ticket: z.string().min(1), expiresAt: z.number() })\n\n/**\n * 认证页面公开配置白名单,独立于服务端连接/凭据配置。\n * @example\n * ```ts\n * import { IamPublicConfigSchema } from '@h-ai/api-contract'\n *\n * const value = IamPublicConfigSchema.parse({\n * password: {\n * minLength: 0,\n * maxLength: 0,\n * requireUppercase: true,\n * requireLowercase: true,\n * requireNumber: true,\n * requireSpecialChar: true,\n * expirationDays: 0\n * },\n * register: {\n * enabled: true\n * },\n * login: {\n * password: true,\n * otp: true,\n * ldap: true,\n * email: true,\n * sms: true\n * },\n * passwordReset: {\n * enabled: true,\n * mode: 'email'\n * },\n * otp: {\n * length: 0,\n * resendInterval: 0\n * },\n * agreements: {\n * showOnRegister: true,\n * showOnLogin: true\n * },\n * ui: {\n * variant: 'card'\n * },\n * session: {\n * maxAge: 0\n * }\n * })\n * void value\n * ```\n */\nexport const IamPublicConfigSchema = z.object({\n captcha: z.object({ enabled: z.boolean() }).default({ enabled: false }),\n reauthentication: z.object({ enabled: z.boolean(), operations: z.array(z.string()) }).optional(),\n initialCredentials: z.object({ enabled: z.boolean() }).optional(),\n password: z.object({ minLength: z.number(), maxLength: z.number(), requireUppercase: z.boolean(), requireLowercase: z.boolean(), requireNumber: z.boolean(), requireSpecialChar: z.boolean(), expirationDays: z.number(), minCharacterClasses: z.number().optional(), preventSamePassword: z.boolean().optional(), requireInitialChange: z.boolean().optional() }),\n register: z.object({ enabled: z.boolean() }),\n login: z.object({ password: z.boolean(), otp: z.boolean(), ldap: z.boolean(), email: z.boolean(), sms: z.boolean() }),\n passwordReset: z.object({ enabled: z.boolean(), mode: z.enum(['email', 'phone']) }),\n otp: z.object({ length: z.number(), resendInterval: z.number() }),\n agreements: IamAgreementDisplaySchema,\n ui: z.object({ variant: z.enum(['card', 'split']), title: z.string().optional(), subtitle: z.string().optional(), brandTitle: z.string().optional(), brandText: z.string().optional(), logoUrl: z.string().optional(), illustrationUrl: z.string().optional() }),\n session: z.object({ maxAge: z.number(), endOnPageHide: z.boolean().default(false) }),\n})\n\n/**\n * OTP 登录入参 Schema。\n * @example\n * ```ts\n * import { IamOtpLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamOtpLoginInputSchema.parse({\n * identifier: 'alice',\n * code: 'example-1'\n * })\n * void value\n * ```\n */\nexport const IamOtpLoginInputSchema = z.object({\n expectedUserId: z.string().min(1).max(200).optional(),\n captcha: captchaProofSchema,\n identifier: z.string().min(1),\n code: z.string().min(1),\n})\n\n/**\n * 登出入参 Schema。\n * 仅撤销调用方持有的完整 accessToken;省略时使用 Authorization Bearer,二者均无值则失败。\n * access 已到期仍可撤销关联 refresh;此入口不按 userId 撤销,也不授予任何身份权限。\n * @example\n * ```ts\n * import { IamLogoutInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamLogoutInputSchema.parse({})\n * void value\n * ```\n */\nexport const IamLogoutInputSchema = z.object({\n accessToken: z.string().min(1).optional(),\n})\n\n/**\n * 发送 OTP 入参 Schema。\n * @example\n * ```ts\n * import { IamSendOtpInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamSendOtpInputSchema.parse({\n * identifier: 'alice'\n * })\n * void value\n * ```\n */\nexport const IamSendOtpInputSchema = z.object({\n captcha: captchaProofSchema,\n identifier: z.string().min(1),\n})\n\n/**\n * 发送 OTP 业务数据 Schema。\n * @example\n * ```ts\n * import { IamSendOtpDataSchema } from '@h-ai/api-contract'\n *\n * const value = IamSendOtpDataSchema.parse({\n * expiresAt: null\n * })\n * void value\n * ```\n */\nexport const IamSendOtpDataSchema = z.object({\n expiresAt: z.coerce.date(),\n})\n\n/**\n * Token 刷新入参 Schema。\n * @example\n * ```ts\n * import { IamRefreshTokenInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamRefreshTokenInputSchema.parse({\n * refreshToken: 'example-only-refresh'\n * })\n * void value\n * ```\n */\nexport const IamRefreshTokenInputSchema = z.object({\n refreshToken: z.string().min(1),\n})\n\n/**\n * Token 刷新业务数据 Schema。\n * @example\n * ```ts\n * import { IamRefreshTokenDataSchema } from '@h-ai/api-contract'\n *\n * const value = IamRefreshTokenDataSchema.parse({\n * tokens: {\n * accessToken: 'example-only-access',\n * expiresIn: 0,\n * tokenType: 'Bearer'\n * }\n * })\n * void value\n * ```\n */\nexport const IamRefreshTokenDataSchema = z.object({\n tokens: IamTokenPairSchema,\n})\n\n/**\n * 注册入参 Schema。\n * @example\n * ```ts\n * import { IamRegisterInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamRegisterInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamRegisterInputSchema = z.object({\n captcha: captchaProofSchema,\n username: z.string().min(1),\n password: z.string().min(1),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/**\n * 修改密码入参 Schema。\n * @example\n * ```ts\n * import { IamChangePasswordInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamChangePasswordInputSchema.parse({\n * oldPassword: 'example',\n * newPassword: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamChangePasswordInputSchema = z.object({\n oldPassword: z.string().min(1),\n newPassword: z.string().min(1),\n})\n\n/**\n * 当前用户更新入参 Schema。\n * @example\n * ```ts\n * import { IamUpdateCurrentUserInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamUpdateCurrentUserInputSchema.parse({})\n * void value\n * ```\n */\nexport const IamUpdateCurrentUserInputSchema = z.object({\n username: z.string().min(1).optional(),\n email: z.string().email().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n phone: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/**\n * 用户列表查询入参 Schema。\n * @example\n * ```ts\n * import { IamListUsersInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamListUsersInputSchema.parse({})\n * void value\n * ```\n */\nexport const IamListUsersInputSchema = PaginationQuerySchema.extend({\n sortBy: z.enum(['username', 'email', 'displayName', 'accountStatus', 'createdAt']).optional(),\n sortDirection: z.enum(['asc', 'desc']).optional(),\n roleCode: z.string().trim().min(1).max(100).optional(),\n search: z.string().optional(),\n accountStatus: z.enum(['active', 'dormant', 'closed']).optional(),\n}).strict()\n\n/**\n * Admin 创建用户入参 Schema。\n * @example\n * ```ts\n * import { IamAdminCreateUserInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamAdminCreateUserInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamAdminCreateUserInputSchema = z.strictObject({\n accountType: z.enum(['permanent', 'temporary']).optional(),\n accountStatus: z.enum(['active', 'dormant', 'closed']).optional(),\n accountExpiresAt: z.coerce.date().optional(),\n username: z.string().min(1),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n password: z.string().min(1),\n displayName: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n roleIds: z.array(z.string()).optional(),\n})\n\n/**\n * 管理端单次邀请不接收共享初始密码;初始账号必须处于激活状态。\n * @example\n * ```ts\n * import { IamInviteUserInputSchema } from '@h-ai/api-contract'\n * const input = IamInviteUserInputSchema.parse({ username: 'alice', email: 'alice@example.com' })\n * ```\n */\nexport const IamInviteUserInputSchema = IamAdminCreateUserInputSchema.omit({ password: true }).extend({ accountStatus: z.literal('active').optional() })\n\n/**\n * 单次邀请的管理端输入。\n * @example\n * ```ts\n * import type { IamInviteUserInput } from '@h-ai/api-contract'\n * const input: IamInviteUserInput = { username: 'alice', email: 'alice@example.com' }\n * ```\n */\nexport type IamInviteUserInput = z.infer<typeof IamInviteUserInputSchema>\n\n/**\n * Admin 更新用户入参 Schema。\n * @example\n * ```ts\n * import { IamAdminUpdateUserInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamAdminUpdateUserInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport const IamAdminUpdateUserInputSchema = z.strictObject({\n accountType: z.enum(['permanent', 'temporary']).optional(),\n accountStatus: z.enum(['active', 'dormant', 'closed']).optional(),\n accountExpiresAt: z.coerce.date().nullable().optional(),\n id: z.string().min(1),\n username: z.string().min(1).optional(),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n roleIds: z.array(z.string()).optional(),\n})\n\n/**\n * Admin 删除用户入参 Schema。\n * @example\n * ```ts\n * import { IamUserIdInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamUserIdInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport const IamUserIdInputSchema = z.object({\n id: z.string().min(1),\n})\n\n/**\n * Admin 重置密码入参 Schema。\n * @example\n * ```ts\n * import { IamAdminResetPasswordInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamAdminResetPasswordInputSchema.parse({\n * id: 'example-1',\n * newPassword: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamAdminResetPasswordInputSchema = z.object({\n id: z.string().min(1),\n newPassword: z.string().min(1),\n})\n\n/**\n * 角色基础信息 Schema。\n * @example\n * ```ts\n * import { IamRoleSchema } from '@h-ai/api-contract'\n *\n * const value = IamRoleSchema.parse({\n * id: 'example-1',\n * code: 'example-1',\n * name: 'Example',\n * createdAt: null,\n * updatedAt: null\n * })\n * void value\n * ```\n */\nexport const IamRoleSchema = z.object({\n id: z.string(),\n code: z.string(),\n name: z.string(),\n description: z.string().optional(),\n isSystem: z.boolean().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n})\n\n/**\n * 创建角色入参 Schema。\n * @example\n * ```ts\n * import { IamCreateRoleInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamCreateRoleInputSchema.parse({\n * code: 'example-1',\n * name: 'Example'\n * })\n * void value\n * ```\n */\nexport const IamCreateRoleInputSchema = z.object({\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n isSystem: z.boolean().optional(),\n})\n\n/**\n * 更新角色入参 Schema。\n * @example\n * ```ts\n * import { IamUpdateRoleInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamUpdateRoleInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport const IamUpdateRoleInputSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1).optional(),\n description: z.string().optional(),\n})\n\n/**\n * 权限类型 Schema。\n * @example\n * ```ts\n * import { IamPermissionTypeSchema } from '@h-ai/api-contract'\n *\n * const value = IamPermissionTypeSchema.parse('menu')\n * void value\n * ```\n */\nexport const IamPermissionTypeSchema = z.enum(['menu', 'api', 'button'])\n\n/**\n * 权限基础信息 Schema。\n * @example\n * ```ts\n * import { IamPermissionSchema } from '@h-ai/api-contract'\n *\n * const value = IamPermissionSchema.parse({\n * id: 'example-1',\n * code: 'example-1',\n * name: 'Example',\n * createdAt: null,\n * updatedAt: null\n * })\n * void value\n * ```\n */\nexport const IamPermissionSchema = z.object({\n sensitiveOperations: z.array(z.string().trim().min(1).max(128)).max(1000).nullish().transform(value => value ?? []),\n id: z.string(),\n code: z.string(),\n name: z.string(),\n description: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n resource: z.string().optional(),\n action: z.string().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n})\n\n/**\n * 权限列表查询入参 Schema。\n * @example\n * ```ts\n * import { IamListPermissionsInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamListPermissionsInputSchema.parse({})\n * void value\n * ```\n */\nexport const IamListPermissionsInputSchema = PaginationQuerySchema.extend({\n search: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n})\n\n/**\n * 创建权限入参 Schema。\n * @example\n * ```ts\n * import { IamCreatePermissionInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamCreatePermissionInputSchema.parse({\n * code: 'example-1',\n * name: 'Example'\n * })\n * void value\n * ```\n */\nexport const IamCreatePermissionInputSchema = z.object({\n sensitiveOperations: z.array(z.string().trim().min(1).max(128)).max(1000).default([]),\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n resource: z.string().optional(),\n action: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n})\n\n/**\n * 账号密码登录请求。\n * @example\n * ```ts\n * import type { IamLoginInput } from '@h-ai/api-contract'\n * import { IamLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamLoginInput = IamLoginInputSchema.parse({\n * identifier: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamLoginInput = z.infer<typeof IamLoginInputSchema>\n/**\n * LDAP 登录请求。\n * @example\n * ```ts\n * import type { IamLdapLoginInput } from '@h-ai/api-contract'\n * import { IamLdapLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamLdapLoginInput = IamLdapLoginInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamLdapLoginInput = z.infer<typeof IamLdapLoginInputSchema>\n/**\n * 允许下发客户端的身份认证配置。\n * @example\n * ```ts\n * import type { IamPublicConfig } from '@h-ai/api-contract'\n * import { IamPublicConfigSchema } from '@h-ai/api-contract'\n *\n * const value: IamPublicConfig = IamPublicConfigSchema.parse({\n * password: {\n * minLength: 0,\n * maxLength: 0,\n * requireUppercase: true,\n * requireLowercase: true,\n * requireNumber: true,\n * requireSpecialChar: true,\n * expirationDays: 0\n * },\n * register: {\n * enabled: true\n * },\n * login: {\n * password: true,\n * otp: true,\n * ldap: true,\n * email: true,\n * sms: true\n * },\n * passwordReset: {\n * enabled: true,\n * mode: 'email'\n * },\n * otp: {\n * length: 0,\n * resendInterval: 0\n * },\n * agreements: {\n * showOnRegister: true,\n * showOnLogin: true\n * },\n * ui: {\n * variant: 'card'\n * },\n * session: {\n * maxAge: 0\n * }\n * })\n * void value\n * ```\n */\nexport type IamPublicConfig = z.infer<typeof IamPublicConfigSchema>\n/**\n * 一次性验证码登录请求。\n * @example\n * ```ts\n * import type { IamOtpLoginInput } from '@h-ai/api-contract'\n * import { IamOtpLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamOtpLoginInput = IamOtpLoginInputSchema.parse({\n * identifier: 'alice',\n * code: 'example-1'\n * })\n * void value\n * ```\n */\nexport type IamOtpLoginInput = z.infer<typeof IamOtpLoginInputSchema>\n/**\n * 注销当前会话的请求。\n * @example\n * ```ts\n * import type { IamLogoutInput } from '@h-ai/api-contract'\n * import { IamLogoutInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamLogoutInput = IamLogoutInputSchema.parse({})\n * void value\n * ```\n */\nexport type IamLogoutInput = z.infer<typeof IamLogoutInputSchema>\n/**\n * 发送一次性验证码的请求。\n * @example\n * ```ts\n * import type { IamSendOtpInput } from '@h-ai/api-contract'\n * import { IamSendOtpInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamSendOtpInput = IamSendOtpInputSchema.parse({\n * identifier: 'alice'\n * })\n * void value\n * ```\n */\nexport type IamSendOtpInput = z.infer<typeof IamSendOtpInputSchema>\n/**\n * 以 HaiResult 区分成功业务数据和公共错误的 IamAuthResultOutput 响应。\n * @example\n * ```ts\n * import type { IamAuthResultOutput } from '@h-ai/api-contract'\n * import { IamAuthResultSchema } from '@h-ai/api-contract'\n * import { ok } from '@h-ai/core'\n *\n * const response: IamAuthResultOutput = ok(IamAuthResultSchema.parse({\n * user: {\n * id: 'example-1',\n * username: 'alice',\n * enabled: true,\n * createdAt: null,\n * updatedAt: null\n * },\n * tokens: {\n * accessToken: 'example-only-access',\n * expiresIn: 0,\n * tokenType: 'Bearer'\n * }\n * }))\n * if (response.success) void response.data\n * ```\n */\nexport type IamAuthResultOutput = HaiResult<z.infer<typeof IamAuthResultSchema>>\n/**\n * 当前登录用户及其有效权限。\n * @example\n * ```ts\n * import type { IamCurrentUser } from '@h-ai/api-contract'\n * import { IamCurrentUserSchema } from '@h-ai/api-contract'\n *\n * const value: IamCurrentUser = IamCurrentUserSchema.parse({\n * id: 'example-1',\n * username: 'alice',\n * enabled: true,\n * createdAt: null,\n * updatedAt: null,\n * roles: [\n * 'example'\n * ],\n * permissions: [\n * 'example'\n * ]\n * })\n * void value\n * ```\n */\nexport type IamCurrentUser = z.infer<typeof IamCurrentUserSchema>\n/**\n * 以 HaiResult 区分成功业务数据和公共错误的 IamCurrentUserOutput 响应。\n * @example\n * ```ts\n * import type { IamCurrentUserOutput } from '@h-ai/api-contract'\n * import { IamCurrentUserSchema } from '@h-ai/api-contract'\n * import { ok } from '@h-ai/core'\n *\n * const response: IamCurrentUserOutput = ok(IamCurrentUserSchema.parse({\n * id: 'example-1',\n * username: 'alice',\n * enabled: true,\n * createdAt: null,\n * updatedAt: null,\n * roles: [\n * 'example'\n * ],\n * permissions: [\n * 'example'\n * ]\n * }))\n * if (response.success) void response.data\n * ```\n */\nexport type IamCurrentUserOutput = HaiResult<IamCurrentUser>\n/**\n * 使用刷新凭据换取会话令牌的请求。\n * @example\n * ```ts\n * import type { IamRefreshTokenInput } from '@h-ai/api-contract'\n * import { IamRefreshTokenInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamRefreshTokenInput = IamRefreshTokenInputSchema.parse({\n * refreshToken: 'example-only-refresh'\n * })\n * void value\n * ```\n */\nexport type IamRefreshTokenInput = z.infer<typeof IamRefreshTokenInputSchema>\n/**\n * 以 HaiResult 区分成功业务数据和公共错误的 IamRefreshTokenOutput 响应。\n * @example\n * ```ts\n * import type { IamRefreshTokenOutput } from '@h-ai/api-contract'\n * import { IamRefreshTokenDataSchema } from '@h-ai/api-contract'\n * import { ok } from '@h-ai/core'\n *\n * const response: IamRefreshTokenOutput = ok(IamRefreshTokenDataSchema.parse({\n * tokens: {\n * accessToken: 'example-only-access',\n * expiresIn: 0,\n * tokenType: 'Bearer'\n * }\n * }))\n * if (response.success) void response.data\n * ```\n */\nexport type IamRefreshTokenOutput = HaiResult<z.infer<typeof IamRefreshTokenDataSchema>>\n/**\n * 用户注册请求。\n * @example\n * ```ts\n * import type { IamRegisterInput } from '@h-ai/api-contract'\n * import { IamRegisterInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamRegisterInput = IamRegisterInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamRegisterInput = z.infer<typeof IamRegisterInputSchema>\n/**\n * 当前用户修改密码的请求。\n * @example\n * ```ts\n * import type { IamChangePasswordInput } from '@h-ai/api-contract'\n * import { IamChangePasswordInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamChangePasswordInput = IamChangePasswordInputSchema.parse({\n * oldPassword: 'example',\n * newPassword: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamChangePasswordInput = z.infer<typeof IamChangePasswordInputSchema>\n/**\n * 修改当前用户资料的请求。\n * @example\n * ```ts\n * import type { IamUpdateCurrentUserInput } from '@h-ai/api-contract'\n * import { IamUpdateCurrentUserInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamUpdateCurrentUserInput = IamUpdateCurrentUserInputSchema.parse({})\n * void value\n * ```\n */\nexport type IamUpdateCurrentUserInput = z.infer<typeof IamUpdateCurrentUserInputSchema>\n/**\n * 管理员分页查询用户的请求。\n * @example\n * ```ts\n * import type { IamListUsersInput } from '@h-ai/api-contract'\n * import { IamListUsersInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamListUsersInput = IamListUsersInputSchema.parse({})\n * void value\n * ```\n */\nexport type IamListUsersInput = z.infer<typeof IamListUsersInputSchema>\n/**\n * 管理员创建用户的请求。\n * @example\n * ```ts\n * import type { IamAdminCreateUserInput } from '@h-ai/api-contract'\n * import { IamAdminCreateUserInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamAdminCreateUserInput = IamAdminCreateUserInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamAdminCreateUserInput = z.infer<typeof IamAdminCreateUserInputSchema>\n/**\n * 管理员修改用户的请求。\n * @example\n * ```ts\n * import type { IamAdminUpdateUserInput } from '@h-ai/api-contract'\n * import { IamAdminUpdateUserInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamAdminUpdateUserInput = IamAdminUpdateUserInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport type IamAdminUpdateUserInput = z.infer<typeof IamAdminUpdateUserInputSchema>\n/**\n * 以用户 ID 定位目标的请求。\n * @example\n * ```ts\n * import type { IamUserIdInput } from '@h-ai/api-contract'\n * import { IamUserIdInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamUserIdInput = IamUserIdInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport type IamUserIdInput = z.infer<typeof IamUserIdInputSchema>\n/**\n * 管理员重置用户密码的请求。\n * @example\n * ```ts\n * import type { IamAdminResetPasswordInput } from '@h-ai/api-contract'\n * import { IamAdminResetPasswordInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamAdminResetPasswordInput = IamAdminResetPasswordInputSchema.parse({\n * id: 'example-1',\n * newPassword: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamAdminResetPasswordInput = z.infer<typeof IamAdminResetPasswordInputSchema>\n/**\n * 创建角色的请求。\n * @example\n * ```ts\n * import type { IamCreateRoleInput } from '@h-ai/api-contract'\n * import { IamCreateRoleInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamCreateRoleInput = IamCreateRoleInputSchema.parse({\n * code: 'example-1',\n * name: 'Example'\n * })\n * void value\n * ```\n */\nexport type IamCreateRoleInput = z.infer<typeof IamCreateRoleInputSchema>\n/**\n * 修改角色的请求。\n * @example\n * ```ts\n * import type { IamUpdateRoleInput } from '@h-ai/api-contract'\n * import { IamUpdateRoleInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamUpdateRoleInput = IamUpdateRoleInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport type IamUpdateRoleInput = z.infer<typeof IamUpdateRoleInputSchema>\n/**\n * 分页查询权限定义的请求。\n * @example\n * ```ts\n * import type { IamListPermissionsInput } from '@h-ai/api-contract'\n * import { IamListPermissionsInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamListPermissionsInput = IamListPermissionsInputSchema.parse({})\n * void value\n * ```\n */\nexport type IamListPermissionsInput = z.infer<typeof IamListPermissionsInputSchema>\n/**\n * 创建权限定义的请求。\n * @example\n * ```ts\n * import type { IamCreatePermissionInput } from '@h-ai/api-contract'\n * import { IamCreatePermissionInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamCreatePermissionInput = IamCreatePermissionInputSchema.parse({\n * code: 'example-1',\n * name: 'Example'\n * })\n * void value\n * ```\n */\nexport type IamCreatePermissionInput = z.infer<typeof IamCreatePermissionInputSchema>\n","/**\n * @h-ai/api-contract — IAM 领域 contract\n *\n * 定义身份认证与权限管理相关 API 的接口边界:\n * - auth:登录、登出、OTP、刷新 Token、注册、修改密码\n * - users:Admin 管理用户(CRUD + 重置密码)\n * - roles:Admin 管理角色(CRUD)\n * - permissions:Admin 管理权限(CRUD)\n *\n * auth.* 入口址前缀为 `/auth`;users/roles/permissions 前缀为 `/iam`。\n * @module iam-contract\n */\n\nimport { paginatedSchema } from '../common/pagination-schemas.js'\nimport { haiResultSchema, HaiVoidResultSchema } from '../common/result-schemas.js'\nimport { route } from '../common/route.js'\nimport {\n IamAdminCreateUserInputSchema,\n IamAdminResetPasswordInputSchema,\n IamAdminUpdateUserInputSchema,\n IamAuthResultSchema,\n IamCaptchaChallengeSchema,\n IamChangePasswordInputSchema,\n IamConfirmPasswordResetInputSchema,\n IamCreateCaptchaInputSchema,\n IamCreatePermissionInputSchema,\n IamCreateRoleInputSchema,\n IamCurrentUserSchema,\n IamInviteUserInputSchema,\n IamLdapLoginInputSchema,\n IamListPermissionsInputSchema,\n IamListUsersInputSchema,\n IamLoginInputSchema,\n IamLogoutInputSchema,\n IamOtpLoginInputSchema,\n IamPermissionSchema,\n IamPublicConfigSchema,\n IamReauthenticateInputSchema,\n IamReauthenticationProofSchema,\n IamRefreshTokenDataSchema,\n IamRefreshTokenInputSchema,\n IamRegisterInputSchema,\n IamRenewPasswordInputSchema,\n IamRequestPasswordResetInputSchema,\n IamRoleSchema,\n IamSendOtpDataSchema,\n IamSendOtpInputSchema,\n IamUpdateCurrentUserInputSchema,\n IamUpdateRoleInputSchema,\n IamUserIdInputSchema,\n IamUserSchema,\n} from './iam-schemas.js'\n\n// 同一 contract 内被多个接口复用的输出结构保持私有,避免扩大公共 Schema 面。\nconst authResultOutputSchema = haiResultSchema(IamAuthResultSchema)\nconst userOutputSchema = haiResultSchema(IamUserSchema)\nconst roleOutputSchema = haiResultSchema(IamRoleSchema)\n\n/**\n * IAM 领域 oRPC contract。\n * @example\n * ```ts\n * import { apiContract } from '@h-ai/api-contract'\n *\n * const contract = apiContract.iam\n * void contract\n * ```\n */\nexport const iamContract = {\n auth: {\n createCaptcha: route({ method: 'POST', path: '/auth/captcha', operationId: 'iam.auth.createCaptcha', summary: 'Create self-hosted security challenge', tags: ['iam', 'auth'] })\n .input(IamCreateCaptchaInputSchema)\n .output(haiResultSchema(IamCaptchaChallengeSchema)),\n reauthenticate: route({ method: 'POST', path: '/auth/reauthenticate', operationId: 'iam.auth.reauthenticate', summary: 'Verify current password for one sensitive operation', tags: ['iam', 'auth'] })\n .input(IamReauthenticateInputSchema)\n .output(haiResultSchema(IamReauthenticationProofSchema)),\n publicConfig: route({ method: 'GET', path: '/auth/config', operationId: 'iam.auth.publicConfig', summary: 'Public authentication configuration', tags: ['iam', 'auth'] })\n .output(haiResultSchema(IamPublicConfigSchema.nullable())),\n renewPassword: route({ method: 'POST', path: '/auth/password/renew', operationId: 'iam.auth.renewPassword', summary: 'Change initial or expired password', tags: ['iam', 'auth'] })\n .input(IamRenewPasswordInputSchema)\n .output(HaiVoidResultSchema),\n loginWithLdap: route({ method: 'POST', path: '/auth/login/ldap', operationId: 'iam.auth.loginWithLdap', summary: 'LDAP login', tags: ['iam', 'auth'] })\n .input(IamLdapLoginInputSchema)\n .output(authResultOutputSchema),\n requestPasswordReset: route({ method: 'POST', path: '/auth/password-reset/request', operationId: 'iam.auth.requestPasswordReset', summary: 'Request password reset', tags: ['iam', 'auth'] })\n .input(IamRequestPasswordResetInputSchema)\n .output(HaiVoidResultSchema),\n confirmPasswordReset: route({ method: 'POST', path: '/auth/password-reset/confirm', operationId: 'iam.auth.confirmPasswordReset', summary: 'Confirm password reset', tags: ['iam', 'auth'] })\n .input(IamConfirmPasswordResetInputSchema)\n .output(HaiVoidResultSchema),\n login: route({ method: 'POST', path: '/auth/login', operationId: 'iam.auth.login', summary: 'Password login', tags: ['iam', 'auth'] })\n .input(IamLoginInputSchema)\n .output(authResultOutputSchema),\n loginWithOtp: route({ method: 'POST', path: '/auth/login/otp', operationId: 'iam.auth.loginWithOtp', summary: 'OTP login', tags: ['iam', 'auth'] })\n .input(IamOtpLoginInputSchema)\n .output(authResultOutputSchema),\n logout: route({ method: 'POST', path: '/auth/logout', operationId: 'iam.auth.logout', summary: 'Logout', tags: ['iam', 'auth'] })\n .input(IamLogoutInputSchema)\n .output(HaiVoidResultSchema),\n closeSession: route({ method: 'POST', path: '/auth/session/close', operationId: 'iam.auth.closeSession', summary: 'Revoke departing client session without clearing newer cookies', tags: ['iam', 'auth'] })\n .input(IamLogoutInputSchema)\n .output(HaiVoidResultSchema),\n currentUser: route({ method: 'GET', path: '/auth/me', operationId: 'iam.auth.currentUser', summary: 'Get current user and access scope', tags: ['iam', 'auth'] })\n .output(haiResultSchema(IamCurrentUserSchema)),\n refresh: route({ method: 'POST', path: '/auth/refresh', operationId: 'iam.auth.refresh', summary: 'Refresh access token', tags: ['iam', 'auth'] })\n .input(IamRefreshTokenInputSchema)\n .output(haiResultSchema(IamRefreshTokenDataSchema)),\n sendOtp: route({ method: 'POST', path: '/auth/otp/send', operationId: 'iam.auth.sendOtp', summary: 'Send OTP', tags: ['iam', 'auth'] })\n .input(IamSendOtpInputSchema)\n .output(haiResultSchema(IamSendOtpDataSchema)),\n register: route({ method: 'POST', path: '/auth/register', operationId: 'iam.auth.register', summary: 'Register and login', tags: ['iam', 'auth'] })\n .input(IamRegisterInputSchema)\n .output(authResultOutputSchema),\n changePassword: route({ method: 'POST', path: '/auth/change-password', operationId: 'iam.auth.changePassword', summary: 'Change current user password', tags: ['iam', 'auth'] })\n .input(IamChangePasswordInputSchema)\n .output(HaiVoidResultSchema),\n updateCurrentUser: route({ method: 'PUT', path: '/auth/me', operationId: 'iam.auth.updateCurrentUser', summary: 'Update current user', tags: ['iam', 'auth'] })\n .input(IamUpdateCurrentUserInputSchema)\n .output(userOutputSchema),\n },\n users: {\n invite: route({ method: 'POST', path: '/iam/users/invite', operationId: 'iam.users.invite', summary: 'Create account with one-time setup invitation', tags: ['iam', 'users'] })\n .input(IamInviteUserInputSchema)\n .output(userOutputSchema),\n list: route({ method: 'GET', path: '/iam/users', operationId: 'iam.users.list', summary: 'List users', tags: ['iam', 'users'] })\n .input(IamListUsersInputSchema)\n .output(haiResultSchema(paginatedSchema(IamUserSchema))),\n get: route({ method: 'GET', path: '/iam/users/{id}', operationId: 'iam.users.get', summary: 'Get user', tags: ['iam', 'users'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamUserSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/users', operationId: 'iam.users.create', summary: 'Create user', tags: ['iam', 'users'] })\n .input(IamAdminCreateUserInputSchema)\n .output(userOutputSchema),\n update: route({ method: 'PUT', path: '/iam/users/{id}', operationId: 'iam.users.update', summary: 'Update user', tags: ['iam', 'users'] })\n .input(IamAdminUpdateUserInputSchema)\n .output(userOutputSchema),\n delete: route({ method: 'DELETE', path: '/iam/users/{id}', operationId: 'iam.users.delete', summary: 'Delete user', tags: ['iam', 'users'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n resetPassword: route({ method: 'POST', path: '/iam/users/{id}/reset-password', operationId: 'iam.users.resetPassword', summary: 'Reset user password', tags: ['iam', 'users'] })\n .input(IamAdminResetPasswordInputSchema)\n .output(HaiVoidResultSchema),\n },\n roles: {\n list: route({ method: 'GET', path: '/iam/roles', operationId: 'iam.roles.list', summary: 'List roles', tags: ['iam', 'roles'] })\n .output(haiResultSchema(paginatedSchema(IamRoleSchema))),\n get: route({ method: 'GET', path: '/iam/roles/{id}', operationId: 'iam.roles.get', summary: 'Get role', tags: ['iam', 'roles'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamRoleSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/roles', operationId: 'iam.roles.create', summary: 'Create role', tags: ['iam', 'roles'] })\n .input(IamCreateRoleInputSchema)\n .output(roleOutputSchema),\n update: route({ method: 'PUT', path: '/iam/roles/{id}', operationId: 'iam.roles.update', summary: 'Update role', tags: ['iam', 'roles'] })\n .input(IamUpdateRoleInputSchema)\n .output(roleOutputSchema),\n delete: route({ method: 'DELETE', path: '/iam/roles/{id}', operationId: 'iam.roles.delete', summary: 'Delete role', tags: ['iam', 'roles'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n },\n permissions: {\n setSensitiveOperations: route({ method: 'PUT', path: '/iam/permissions/{id}/sensitive-operations', operationId: 'iam.permissions.sensitiveOperations', summary: 'Set permission sensitive operations', tags: ['iam', 'permissions'] })\n .input(IamPermissionSchema.pick({ id: true, sensitiveOperations: true }))\n .output(HaiVoidResultSchema),\n list: route({ method: 'GET', path: '/iam/permissions', operationId: 'iam.permissions.list', summary: 'List permissions', tags: ['iam', 'permissions'] })\n .input(IamListPermissionsInputSchema)\n .output(haiResultSchema(paginatedSchema(IamPermissionSchema))),\n get: route({ method: 'GET', path: '/iam/permissions/{id}', operationId: 'iam.permissions.get', summary: 'Get permission', tags: ['iam', 'permissions'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamPermissionSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/permissions', operationId: 'iam.permissions.create', summary: 'Create permission', tags: ['iam', 'permissions'] })\n .input(IamCreatePermissionInputSchema)\n .output(haiResultSchema(IamPermissionSchema)),\n delete: route({ method: 'DELETE', path: '/iam/permissions/{id}', operationId: 'iam.permissions.delete', summary: 'Delete permission', tags: ['iam', 'permissions'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n },\n}\n\n/**\n * iam 领域公开 procedure 契约的完整类型。\n * @example\n * ```ts\n * import type { IamContract } from '@h-ai/api-contract'\n * import { apiContract } from '@h-ai/api-contract'\n *\n * const contract: IamContract = apiContract.iam\n * void contract\n * ```\n */\nexport type IamContract = typeof iamContract\n"]}
|
package/dist/iam/index.d.ts
CHANGED
|
@@ -213,16 +213,15 @@ declare const iamContract: {
|
|
|
213
213
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
214
214
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
215
215
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
216
|
-
enabled: zod.ZodBoolean;
|
|
217
216
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
218
217
|
permanent: "permanent";
|
|
219
218
|
temporary: "temporary";
|
|
220
219
|
}>>;
|
|
221
|
-
accountStatus: zod.
|
|
220
|
+
accountStatus: zod.ZodEnum<{
|
|
222
221
|
active: "active";
|
|
223
222
|
dormant: "dormant";
|
|
224
223
|
closed: "closed";
|
|
225
|
-
}
|
|
224
|
+
}>;
|
|
226
225
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
227
226
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
228
227
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -318,16 +317,15 @@ declare const iamContract: {
|
|
|
318
317
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
319
318
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
320
319
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
321
|
-
enabled: zod.ZodBoolean;
|
|
322
320
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
323
321
|
permanent: "permanent";
|
|
324
322
|
temporary: "temporary";
|
|
325
323
|
}>>;
|
|
326
|
-
accountStatus: zod.
|
|
324
|
+
accountStatus: zod.ZodEnum<{
|
|
327
325
|
active: "active";
|
|
328
326
|
dormant: "dormant";
|
|
329
327
|
closed: "closed";
|
|
330
|
-
}
|
|
328
|
+
}>;
|
|
331
329
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
332
330
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
333
331
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -383,16 +381,15 @@ declare const iamContract: {
|
|
|
383
381
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
384
382
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
385
383
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
386
|
-
enabled: zod.ZodBoolean;
|
|
387
384
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
388
385
|
permanent: "permanent";
|
|
389
386
|
temporary: "temporary";
|
|
390
387
|
}>>;
|
|
391
|
-
accountStatus: zod.
|
|
388
|
+
accountStatus: zod.ZodEnum<{
|
|
392
389
|
active: "active";
|
|
393
390
|
dormant: "dormant";
|
|
394
391
|
closed: "closed";
|
|
395
|
-
}
|
|
392
|
+
}>;
|
|
396
393
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
397
394
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
398
395
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -480,16 +477,15 @@ declare const iamContract: {
|
|
|
480
477
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
481
478
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
482
479
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
483
|
-
enabled: zod.ZodBoolean;
|
|
484
480
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
485
481
|
permanent: "permanent";
|
|
486
482
|
temporary: "temporary";
|
|
487
483
|
}>>;
|
|
488
|
-
accountStatus: zod.
|
|
484
|
+
accountStatus: zod.ZodEnum<{
|
|
489
485
|
active: "active";
|
|
490
486
|
dormant: "dormant";
|
|
491
487
|
closed: "closed";
|
|
492
|
-
}
|
|
488
|
+
}>;
|
|
493
489
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
494
490
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
495
491
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -581,16 +577,15 @@ declare const iamContract: {
|
|
|
581
577
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
582
578
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
583
579
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
584
|
-
enabled: zod.ZodBoolean;
|
|
585
580
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
586
581
|
permanent: "permanent";
|
|
587
582
|
temporary: "temporary";
|
|
588
583
|
}>>;
|
|
589
|
-
accountStatus: zod.
|
|
584
|
+
accountStatus: zod.ZodEnum<{
|
|
590
585
|
active: "active";
|
|
591
586
|
dormant: "dormant";
|
|
592
587
|
closed: "closed";
|
|
593
|
-
}
|
|
588
|
+
}>;
|
|
594
589
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
595
590
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
596
591
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -667,16 +662,15 @@ declare const iamContract: {
|
|
|
667
662
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
668
663
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
669
664
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
670
|
-
enabled: zod.ZodBoolean;
|
|
671
665
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
672
666
|
permanent: "permanent";
|
|
673
667
|
temporary: "temporary";
|
|
674
668
|
}>>;
|
|
675
|
-
accountStatus: zod.
|
|
669
|
+
accountStatus: zod.ZodEnum<{
|
|
676
670
|
active: "active";
|
|
677
671
|
dormant: "dormant";
|
|
678
672
|
closed: "closed";
|
|
679
|
-
}
|
|
673
|
+
}>;
|
|
680
674
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
681
675
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
682
676
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -714,9 +708,8 @@ declare const iamContract: {
|
|
|
714
708
|
}>>;
|
|
715
709
|
accountExpiresAt: zod.ZodOptional<zod.ZodCoercedDate<unknown>>;
|
|
716
710
|
roleIds: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
|
|
717
|
-
enabled: zod.ZodOptional<zod.ZodLiteral<true>>;
|
|
718
711
|
accountStatus: zod.ZodOptional<zod.ZodLiteral<"active">>;
|
|
719
|
-
}, zod_v4_core.$
|
|
712
|
+
}, zod_v4_core.$strict>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
720
713
|
success: zod.ZodLiteral<true>;
|
|
721
714
|
data: zod.ZodObject<{
|
|
722
715
|
id: zod.ZodString;
|
|
@@ -725,16 +718,15 @@ declare const iamContract: {
|
|
|
725
718
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
726
719
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
727
720
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
728
|
-
enabled: zod.ZodBoolean;
|
|
729
721
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
730
722
|
permanent: "permanent";
|
|
731
723
|
temporary: "temporary";
|
|
732
724
|
}>>;
|
|
733
|
-
accountStatus: zod.
|
|
725
|
+
accountStatus: zod.ZodEnum<{
|
|
734
726
|
active: "active";
|
|
735
727
|
dormant: "dormant";
|
|
736
728
|
closed: "closed";
|
|
737
|
-
}
|
|
729
|
+
}>;
|
|
738
730
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
739
731
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
740
732
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -761,13 +753,25 @@ declare const iamContract: {
|
|
|
761
753
|
list: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
|
|
762
754
|
page: zod.ZodOptional<zod.ZodCoercedNumber<unknown>>;
|
|
763
755
|
pageSize: zod.ZodOptional<zod.ZodCoercedNumber<unknown>>;
|
|
756
|
+
sortBy: zod.ZodOptional<zod.ZodEnum<{
|
|
757
|
+
createdAt: "createdAt";
|
|
758
|
+
email: "email";
|
|
759
|
+
username: "username";
|
|
760
|
+
displayName: "displayName";
|
|
761
|
+
accountStatus: "accountStatus";
|
|
762
|
+
}>>;
|
|
763
|
+
sortDirection: zod.ZodOptional<zod.ZodEnum<{
|
|
764
|
+
asc: "asc";
|
|
765
|
+
desc: "desc";
|
|
766
|
+
}>>;
|
|
764
767
|
roleCode: zod.ZodOptional<zod.ZodString>;
|
|
765
768
|
search: zod.ZodOptional<zod.ZodString>;
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
769
|
+
accountStatus: zod.ZodOptional<zod.ZodEnum<{
|
|
770
|
+
active: "active";
|
|
771
|
+
dormant: "dormant";
|
|
772
|
+
closed: "closed";
|
|
773
|
+
}>>;
|
|
774
|
+
}, zod_v4_core.$strict>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
771
775
|
success: zod.ZodLiteral<true>;
|
|
772
776
|
data: zod.ZodObject<{
|
|
773
777
|
items: zod.ZodArray<zod.ZodObject<{
|
|
@@ -777,16 +781,15 @@ declare const iamContract: {
|
|
|
777
781
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
778
782
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
779
783
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
780
|
-
enabled: zod.ZodBoolean;
|
|
781
784
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
782
785
|
permanent: "permanent";
|
|
783
786
|
temporary: "temporary";
|
|
784
787
|
}>>;
|
|
785
|
-
accountStatus: zod.
|
|
788
|
+
accountStatus: zod.ZodEnum<{
|
|
786
789
|
active: "active";
|
|
787
790
|
dormant: "dormant";
|
|
788
791
|
closed: "closed";
|
|
789
|
-
}
|
|
792
|
+
}>;
|
|
790
793
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
791
794
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
792
795
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -825,16 +828,15 @@ declare const iamContract: {
|
|
|
825
828
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
826
829
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
827
830
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
828
|
-
enabled: zod.ZodBoolean;
|
|
829
831
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
830
832
|
permanent: "permanent";
|
|
831
833
|
temporary: "temporary";
|
|
832
834
|
}>>;
|
|
833
|
-
accountStatus: zod.
|
|
835
|
+
accountStatus: zod.ZodEnum<{
|
|
834
836
|
active: "active";
|
|
835
837
|
dormant: "dormant";
|
|
836
838
|
closed: "closed";
|
|
837
|
-
}
|
|
839
|
+
}>;
|
|
838
840
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
839
841
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
840
842
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -876,8 +878,7 @@ declare const iamContract: {
|
|
|
876
878
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
877
879
|
metadata: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
878
880
|
roleIds: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
|
|
879
|
-
|
|
880
|
-
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
881
|
+
}, zod_v4_core.$strict>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
881
882
|
success: zod.ZodLiteral<true>;
|
|
882
883
|
data: zod.ZodObject<{
|
|
883
884
|
id: zod.ZodString;
|
|
@@ -886,16 +887,15 @@ declare const iamContract: {
|
|
|
886
887
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
887
888
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
888
889
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
889
|
-
enabled: zod.ZodBoolean;
|
|
890
890
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
891
891
|
permanent: "permanent";
|
|
892
892
|
temporary: "temporary";
|
|
893
893
|
}>>;
|
|
894
|
-
accountStatus: zod.
|
|
894
|
+
accountStatus: zod.ZodEnum<{
|
|
895
895
|
active: "active";
|
|
896
896
|
dormant: "dormant";
|
|
897
897
|
closed: "closed";
|
|
898
|
-
}
|
|
898
|
+
}>;
|
|
899
899
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
900
900
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
901
901
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -937,9 +937,8 @@ declare const iamContract: {
|
|
|
937
937
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
938
938
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
939
939
|
metadata: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
940
|
-
enabled: zod.ZodOptional<zod.ZodBoolean>;
|
|
941
940
|
roleIds: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
|
|
942
|
-
}, zod_v4_core.$
|
|
941
|
+
}, zod_v4_core.$strict>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
943
942
|
success: zod.ZodLiteral<true>;
|
|
944
943
|
data: zod.ZodObject<{
|
|
945
944
|
id: zod.ZodString;
|
|
@@ -948,16 +947,15 @@ declare const iamContract: {
|
|
|
948
947
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
949
948
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
950
949
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
951
|
-
enabled: zod.ZodBoolean;
|
|
952
950
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
953
951
|
permanent: "permanent";
|
|
954
952
|
temporary: "temporary";
|
|
955
953
|
}>>;
|
|
956
|
-
accountStatus: zod.
|
|
954
|
+
accountStatus: zod.ZodEnum<{
|
|
957
955
|
active: "active";
|
|
958
956
|
dormant: "dormant";
|
|
959
957
|
closed: "closed";
|
|
960
|
-
}
|
|
958
|
+
}>;
|
|
961
959
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
962
960
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
963
961
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -1395,7 +1393,7 @@ declare const IamCaptchaChallengeSchema: z.ZodObject<{
|
|
|
1395
1393
|
* const value = IamUserSchema.parse({
|
|
1396
1394
|
* id: 'example-1',
|
|
1397
1395
|
* username: 'alice',
|
|
1398
|
-
*
|
|
1396
|
+
* accountStatus: 'active',
|
|
1399
1397
|
* createdAt: null,
|
|
1400
1398
|
* updatedAt: null
|
|
1401
1399
|
* })
|
|
@@ -1409,16 +1407,15 @@ declare const IamUserSchema: z.ZodObject<{
|
|
|
1409
1407
|
phone: z.ZodOptional<z.ZodString>;
|
|
1410
1408
|
displayName: z.ZodOptional<z.ZodString>;
|
|
1411
1409
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
1412
|
-
enabled: z.ZodBoolean;
|
|
1413
1410
|
accountType: z.ZodOptional<z.ZodEnum<{
|
|
1414
1411
|
permanent: "permanent";
|
|
1415
1412
|
temporary: "temporary";
|
|
1416
1413
|
}>>;
|
|
1417
|
-
accountStatus: z.
|
|
1414
|
+
accountStatus: z.ZodEnum<{
|
|
1418
1415
|
active: "active";
|
|
1419
1416
|
dormant: "dormant";
|
|
1420
1417
|
closed: "closed";
|
|
1421
|
-
}
|
|
1418
|
+
}>;
|
|
1422
1419
|
accountExpiresAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
1423
1420
|
lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
1424
1421
|
mustChangePassword: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -1479,7 +1476,7 @@ declare const IamAgreementDisplaySchema: z.ZodObject<{
|
|
|
1479
1476
|
* user: {
|
|
1480
1477
|
* id: 'example-1',
|
|
1481
1478
|
* username: 'alice',
|
|
1482
|
-
*
|
|
1479
|
+
* accountStatus: 'active',
|
|
1483
1480
|
* createdAt: null,
|
|
1484
1481
|
* updatedAt: null
|
|
1485
1482
|
* },
|
|
@@ -1500,16 +1497,15 @@ declare const IamAuthResultSchema: z.ZodObject<{
|
|
|
1500
1497
|
phone: z.ZodOptional<z.ZodString>;
|
|
1501
1498
|
displayName: z.ZodOptional<z.ZodString>;
|
|
1502
1499
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
1503
|
-
enabled: z.ZodBoolean;
|
|
1504
1500
|
accountType: z.ZodOptional<z.ZodEnum<{
|
|
1505
1501
|
permanent: "permanent";
|
|
1506
1502
|
temporary: "temporary";
|
|
1507
1503
|
}>>;
|
|
1508
|
-
accountStatus: z.
|
|
1504
|
+
accountStatus: z.ZodEnum<{
|
|
1509
1505
|
active: "active";
|
|
1510
1506
|
dormant: "dormant";
|
|
1511
1507
|
closed: "closed";
|
|
1512
|
-
}
|
|
1508
|
+
}>;
|
|
1513
1509
|
accountExpiresAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
1514
1510
|
lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
1515
1511
|
mustChangePassword: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -1545,7 +1541,7 @@ declare const IamAuthResultSchema: z.ZodObject<{
|
|
|
1545
1541
|
* const value = IamCurrentUserSchema.parse({
|
|
1546
1542
|
* id: 'example-1',
|
|
1547
1543
|
* username: 'alice',
|
|
1548
|
-
*
|
|
1544
|
+
* accountStatus: 'active',
|
|
1549
1545
|
* createdAt: null,
|
|
1550
1546
|
* updatedAt: null,
|
|
1551
1547
|
* roles: [
|
|
@@ -1565,16 +1561,15 @@ declare const IamCurrentUserSchema: z.ZodObject<{
|
|
|
1565
1561
|
phone: z.ZodOptional<z.ZodString>;
|
|
1566
1562
|
displayName: z.ZodOptional<z.ZodString>;
|
|
1567
1563
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
1568
|
-
enabled: z.ZodBoolean;
|
|
1569
1564
|
accountType: z.ZodOptional<z.ZodEnum<{
|
|
1570
1565
|
permanent: "permanent";
|
|
1571
1566
|
temporary: "temporary";
|
|
1572
1567
|
}>>;
|
|
1573
|
-
accountStatus: z.
|
|
1568
|
+
accountStatus: z.ZodEnum<{
|
|
1574
1569
|
active: "active";
|
|
1575
1570
|
dormant: "dormant";
|
|
1576
1571
|
closed: "closed";
|
|
1577
|
-
}
|
|
1572
|
+
}>;
|
|
1578
1573
|
accountExpiresAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
1579
1574
|
lastLoginAt: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
1580
1575
|
mustChangePassword: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -2002,13 +1997,25 @@ declare const IamUpdateCurrentUserInputSchema: z.ZodObject<{
|
|
|
2002
1997
|
declare const IamListUsersInputSchema: z.ZodObject<{
|
|
2003
1998
|
page: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
2004
1999
|
pageSize: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
2000
|
+
sortBy: z.ZodOptional<z.ZodEnum<{
|
|
2001
|
+
createdAt: "createdAt";
|
|
2002
|
+
email: "email";
|
|
2003
|
+
username: "username";
|
|
2004
|
+
displayName: "displayName";
|
|
2005
|
+
accountStatus: "accountStatus";
|
|
2006
|
+
}>>;
|
|
2007
|
+
sortDirection: z.ZodOptional<z.ZodEnum<{
|
|
2008
|
+
asc: "asc";
|
|
2009
|
+
desc: "desc";
|
|
2010
|
+
}>>;
|
|
2005
2011
|
roleCode: z.ZodOptional<z.ZodString>;
|
|
2006
2012
|
search: z.ZodOptional<z.ZodString>;
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
-
}
|
|
2013
|
+
accountStatus: z.ZodOptional<z.ZodEnum<{
|
|
2014
|
+
active: "active";
|
|
2015
|
+
dormant: "dormant";
|
|
2016
|
+
closed: "closed";
|
|
2017
|
+
}>>;
|
|
2018
|
+
}, z.core.$strict>;
|
|
2012
2019
|
/**
|
|
2013
2020
|
* Admin 创建用户入参 Schema。
|
|
2014
2021
|
* @example
|
|
@@ -2040,10 +2047,9 @@ declare const IamAdminCreateUserInputSchema: z.ZodObject<{
|
|
|
2040
2047
|
displayName: z.ZodOptional<z.ZodString>;
|
|
2041
2048
|
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
2042
2049
|
roleIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2043
|
-
|
|
2044
|
-
}, z.core.$strip>;
|
|
2050
|
+
}, z.core.$strict>;
|
|
2045
2051
|
/**
|
|
2046
|
-
*
|
|
2052
|
+
* 管理端单次邀请不接收共享初始密码;初始账号必须处于激活状态。
|
|
2047
2053
|
* @example
|
|
2048
2054
|
* ```ts
|
|
2049
2055
|
* import { IamInviteUserInputSchema } from '@h-ai/api-contract'
|
|
@@ -2062,9 +2068,8 @@ declare const IamInviteUserInputSchema: z.ZodObject<{
|
|
|
2062
2068
|
}>>;
|
|
2063
2069
|
accountExpiresAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
2064
2070
|
roleIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2065
|
-
enabled: z.ZodOptional<z.ZodLiteral<true>>;
|
|
2066
2071
|
accountStatus: z.ZodOptional<z.ZodLiteral<"active">>;
|
|
2067
|
-
}, z.core.$
|
|
2072
|
+
}, z.core.$strict>;
|
|
2068
2073
|
/**
|
|
2069
2074
|
* 单次邀请的管理端输入。
|
|
2070
2075
|
* @example
|
|
@@ -2104,9 +2109,8 @@ declare const IamAdminUpdateUserInputSchema: z.ZodObject<{
|
|
|
2104
2109
|
displayName: z.ZodOptional<z.ZodString>;
|
|
2105
2110
|
avatarUrl: z.ZodOptional<z.ZodString>;
|
|
2106
2111
|
metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
2107
|
-
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
2108
2112
|
roleIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2109
|
-
}, z.core.$
|
|
2113
|
+
}, z.core.$strict>;
|
|
2110
2114
|
/**
|
|
2111
2115
|
* Admin 删除用户入参 Schema。
|
|
2112
2116
|
* @example
|
package/dist/iam/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamCaptchaChallengeSchema, IamChangePasswordInputSchema, IamConfirmPasswordResetInputSchema, IamCreateCaptchaInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamInviteUserInputSchema, IamLdapLoginInputSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPublicConfigSchema, IamReauthenticateInputSchema, IamReauthenticationProofSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRenewPasswordInputSchema, IamRequestPasswordResetInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamSessionErrorCodeSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema, iamContract } from '../chunk-
|
|
1
|
+
export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamCaptchaChallengeSchema, IamChangePasswordInputSchema, IamConfirmPasswordResetInputSchema, IamCreateCaptchaInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamInviteUserInputSchema, IamLdapLoginInputSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPublicConfigSchema, IamReauthenticateInputSchema, IamReauthenticationProofSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRenewPasswordInputSchema, IamRequestPasswordResetInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamSessionErrorCodeSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema, iamContract } from '../chunk-CXOK55BY.js';
|
|
2
2
|
import '../chunk-CCCPHO6X.js';
|
|
3
3
|
import '../chunk-5UEDYQLG.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -436,16 +436,15 @@ declare const apiContract: {
|
|
|
436
436
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
437
437
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
438
438
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
439
|
-
enabled: zod.ZodBoolean;
|
|
440
439
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
441
440
|
permanent: "permanent";
|
|
442
441
|
temporary: "temporary";
|
|
443
442
|
}>>;
|
|
444
|
-
accountStatus: zod.
|
|
443
|
+
accountStatus: zod.ZodEnum<{
|
|
445
444
|
active: "active";
|
|
446
445
|
dormant: "dormant";
|
|
447
446
|
closed: "closed";
|
|
448
|
-
}
|
|
447
|
+
}>;
|
|
449
448
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
450
449
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
451
450
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -541,16 +540,15 @@ declare const apiContract: {
|
|
|
541
540
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
542
541
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
543
542
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
544
|
-
enabled: zod.ZodBoolean;
|
|
545
543
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
546
544
|
permanent: "permanent";
|
|
547
545
|
temporary: "temporary";
|
|
548
546
|
}>>;
|
|
549
|
-
accountStatus: zod.
|
|
547
|
+
accountStatus: zod.ZodEnum<{
|
|
550
548
|
active: "active";
|
|
551
549
|
dormant: "dormant";
|
|
552
550
|
closed: "closed";
|
|
553
|
-
}
|
|
551
|
+
}>;
|
|
554
552
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
555
553
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
556
554
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -606,16 +604,15 @@ declare const apiContract: {
|
|
|
606
604
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
607
605
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
608
606
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
609
|
-
enabled: zod.ZodBoolean;
|
|
610
607
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
611
608
|
permanent: "permanent";
|
|
612
609
|
temporary: "temporary";
|
|
613
610
|
}>>;
|
|
614
|
-
accountStatus: zod.
|
|
611
|
+
accountStatus: zod.ZodEnum<{
|
|
615
612
|
active: "active";
|
|
616
613
|
dormant: "dormant";
|
|
617
614
|
closed: "closed";
|
|
618
|
-
}
|
|
615
|
+
}>;
|
|
619
616
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
620
617
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
621
618
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -703,16 +700,15 @@ declare const apiContract: {
|
|
|
703
700
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
704
701
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
705
702
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
706
|
-
enabled: zod.ZodBoolean;
|
|
707
703
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
708
704
|
permanent: "permanent";
|
|
709
705
|
temporary: "temporary";
|
|
710
706
|
}>>;
|
|
711
|
-
accountStatus: zod.
|
|
707
|
+
accountStatus: zod.ZodEnum<{
|
|
712
708
|
active: "active";
|
|
713
709
|
dormant: "dormant";
|
|
714
710
|
closed: "closed";
|
|
715
|
-
}
|
|
711
|
+
}>;
|
|
716
712
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
717
713
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
718
714
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -804,16 +800,15 @@ declare const apiContract: {
|
|
|
804
800
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
805
801
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
806
802
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
807
|
-
enabled: zod.ZodBoolean;
|
|
808
803
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
809
804
|
permanent: "permanent";
|
|
810
805
|
temporary: "temporary";
|
|
811
806
|
}>>;
|
|
812
|
-
accountStatus: zod.
|
|
807
|
+
accountStatus: zod.ZodEnum<{
|
|
813
808
|
active: "active";
|
|
814
809
|
dormant: "dormant";
|
|
815
810
|
closed: "closed";
|
|
816
|
-
}
|
|
811
|
+
}>;
|
|
817
812
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
818
813
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
819
814
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -890,16 +885,15 @@ declare const apiContract: {
|
|
|
890
885
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
891
886
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
892
887
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
893
|
-
enabled: zod.ZodBoolean;
|
|
894
888
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
895
889
|
permanent: "permanent";
|
|
896
890
|
temporary: "temporary";
|
|
897
891
|
}>>;
|
|
898
|
-
accountStatus: zod.
|
|
892
|
+
accountStatus: zod.ZodEnum<{
|
|
899
893
|
active: "active";
|
|
900
894
|
dormant: "dormant";
|
|
901
895
|
closed: "closed";
|
|
902
|
-
}
|
|
896
|
+
}>;
|
|
903
897
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
904
898
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
905
899
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -937,9 +931,8 @@ declare const apiContract: {
|
|
|
937
931
|
}>>;
|
|
938
932
|
accountExpiresAt: zod.ZodOptional<zod.ZodCoercedDate<unknown>>;
|
|
939
933
|
roleIds: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
|
|
940
|
-
enabled: zod.ZodOptional<zod.ZodLiteral<true>>;
|
|
941
934
|
accountStatus: zod.ZodOptional<zod.ZodLiteral<"active">>;
|
|
942
|
-
}, zod_v4_core.$
|
|
935
|
+
}, zod_v4_core.$strict>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
943
936
|
success: zod.ZodLiteral<true>;
|
|
944
937
|
data: zod.ZodObject<{
|
|
945
938
|
id: zod.ZodString;
|
|
@@ -948,16 +941,15 @@ declare const apiContract: {
|
|
|
948
941
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
949
942
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
950
943
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
951
|
-
enabled: zod.ZodBoolean;
|
|
952
944
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
953
945
|
permanent: "permanent";
|
|
954
946
|
temporary: "temporary";
|
|
955
947
|
}>>;
|
|
956
|
-
accountStatus: zod.
|
|
948
|
+
accountStatus: zod.ZodEnum<{
|
|
957
949
|
active: "active";
|
|
958
950
|
dormant: "dormant";
|
|
959
951
|
closed: "closed";
|
|
960
|
-
}
|
|
952
|
+
}>;
|
|
961
953
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
962
954
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
963
955
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -984,13 +976,25 @@ declare const apiContract: {
|
|
|
984
976
|
list: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
|
|
985
977
|
page: zod.ZodOptional<zod.ZodCoercedNumber<unknown>>;
|
|
986
978
|
pageSize: zod.ZodOptional<zod.ZodCoercedNumber<unknown>>;
|
|
979
|
+
sortBy: zod.ZodOptional<zod.ZodEnum<{
|
|
980
|
+
createdAt: "createdAt";
|
|
981
|
+
email: "email";
|
|
982
|
+
username: "username";
|
|
983
|
+
displayName: "displayName";
|
|
984
|
+
accountStatus: "accountStatus";
|
|
985
|
+
}>>;
|
|
986
|
+
sortDirection: zod.ZodOptional<zod.ZodEnum<{
|
|
987
|
+
asc: "asc";
|
|
988
|
+
desc: "desc";
|
|
989
|
+
}>>;
|
|
987
990
|
roleCode: zod.ZodOptional<zod.ZodString>;
|
|
988
991
|
search: zod.ZodOptional<zod.ZodString>;
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
992
|
+
accountStatus: zod.ZodOptional<zod.ZodEnum<{
|
|
993
|
+
active: "active";
|
|
994
|
+
dormant: "dormant";
|
|
995
|
+
closed: "closed";
|
|
996
|
+
}>>;
|
|
997
|
+
}, zod_v4_core.$strict>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
994
998
|
success: zod.ZodLiteral<true>;
|
|
995
999
|
data: zod.ZodObject<{
|
|
996
1000
|
items: zod.ZodArray<zod.ZodObject<{
|
|
@@ -1000,16 +1004,15 @@ declare const apiContract: {
|
|
|
1000
1004
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
1001
1005
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
1002
1006
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
1003
|
-
enabled: zod.ZodBoolean;
|
|
1004
1007
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
1005
1008
|
permanent: "permanent";
|
|
1006
1009
|
temporary: "temporary";
|
|
1007
1010
|
}>>;
|
|
1008
|
-
accountStatus: zod.
|
|
1011
|
+
accountStatus: zod.ZodEnum<{
|
|
1009
1012
|
active: "active";
|
|
1010
1013
|
dormant: "dormant";
|
|
1011
1014
|
closed: "closed";
|
|
1012
|
-
}
|
|
1015
|
+
}>;
|
|
1013
1016
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
1014
1017
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
1015
1018
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -1048,16 +1051,15 @@ declare const apiContract: {
|
|
|
1048
1051
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
1049
1052
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
1050
1053
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
1051
|
-
enabled: zod.ZodBoolean;
|
|
1052
1054
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
1053
1055
|
permanent: "permanent";
|
|
1054
1056
|
temporary: "temporary";
|
|
1055
1057
|
}>>;
|
|
1056
|
-
accountStatus: zod.
|
|
1058
|
+
accountStatus: zod.ZodEnum<{
|
|
1057
1059
|
active: "active";
|
|
1058
1060
|
dormant: "dormant";
|
|
1059
1061
|
closed: "closed";
|
|
1060
|
-
}
|
|
1062
|
+
}>;
|
|
1061
1063
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
1062
1064
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
1063
1065
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -1099,8 +1101,7 @@ declare const apiContract: {
|
|
|
1099
1101
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
1100
1102
|
metadata: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
1101
1103
|
roleIds: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
|
|
1102
|
-
|
|
1103
|
-
}, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
1104
|
+
}, zod_v4_core.$strict>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
1104
1105
|
success: zod.ZodLiteral<true>;
|
|
1105
1106
|
data: zod.ZodObject<{
|
|
1106
1107
|
id: zod.ZodString;
|
|
@@ -1109,16 +1110,15 @@ declare const apiContract: {
|
|
|
1109
1110
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
1110
1111
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
1111
1112
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
1112
|
-
enabled: zod.ZodBoolean;
|
|
1113
1113
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
1114
1114
|
permanent: "permanent";
|
|
1115
1115
|
temporary: "temporary";
|
|
1116
1116
|
}>>;
|
|
1117
|
-
accountStatus: zod.
|
|
1117
|
+
accountStatus: zod.ZodEnum<{
|
|
1118
1118
|
active: "active";
|
|
1119
1119
|
dormant: "dormant";
|
|
1120
1120
|
closed: "closed";
|
|
1121
|
-
}
|
|
1121
|
+
}>;
|
|
1122
1122
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
1123
1123
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
1124
1124
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
|
@@ -1160,9 +1160,8 @@ declare const apiContract: {
|
|
|
1160
1160
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
1161
1161
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
1162
1162
|
metadata: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
|
|
1163
|
-
enabled: zod.ZodOptional<zod.ZodBoolean>;
|
|
1164
1163
|
roleIds: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
|
|
1165
|
-
}, zod_v4_core.$
|
|
1164
|
+
}, zod_v4_core.$strict>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
|
|
1166
1165
|
success: zod.ZodLiteral<true>;
|
|
1167
1166
|
data: zod.ZodObject<{
|
|
1168
1167
|
id: zod.ZodString;
|
|
@@ -1171,16 +1170,15 @@ declare const apiContract: {
|
|
|
1171
1170
|
phone: zod.ZodOptional<zod.ZodString>;
|
|
1172
1171
|
displayName: zod.ZodOptional<zod.ZodString>;
|
|
1173
1172
|
avatarUrl: zod.ZodOptional<zod.ZodString>;
|
|
1174
|
-
enabled: zod.ZodBoolean;
|
|
1175
1173
|
accountType: zod.ZodOptional<zod.ZodEnum<{
|
|
1176
1174
|
permanent: "permanent";
|
|
1177
1175
|
temporary: "temporary";
|
|
1178
1176
|
}>>;
|
|
1179
|
-
accountStatus: zod.
|
|
1177
|
+
accountStatus: zod.ZodEnum<{
|
|
1180
1178
|
active: "active";
|
|
1181
1179
|
dormant: "dormant";
|
|
1182
1180
|
closed: "closed";
|
|
1183
|
-
}
|
|
1181
|
+
}>;
|
|
1184
1182
|
accountExpiresAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
1185
1183
|
lastLoginAt: zod.ZodOptional<zod.ZodNullable<zod.ZodCoercedDate<unknown>>>;
|
|
1186
1184
|
mustChangePassword: zod.ZodOptional<zod.ZodBoolean>;
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { iamContract } from './chunk-
|
|
2
|
-
export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamCaptchaChallengeSchema, IamChangePasswordInputSchema, IamConfirmPasswordResetInputSchema, IamCreateCaptchaInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamInviteUserInputSchema, IamLdapLoginInputSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPublicConfigSchema, IamReauthenticateInputSchema, IamReauthenticationProofSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRenewPasswordInputSchema, IamRequestPasswordResetInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamSessionErrorCodeSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema } from './chunk-
|
|
1
|
+
import { iamContract } from './chunk-CXOK55BY.js';
|
|
2
|
+
export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamCaptchaChallengeSchema, IamChangePasswordInputSchema, IamConfirmPasswordResetInputSchema, IamCreateCaptchaInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamInviteUserInputSchema, IamLdapLoginInputSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPublicConfigSchema, IamReauthenticateInputSchema, IamReauthenticationProofSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRenewPasswordInputSchema, IamRequestPasswordResetInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamSessionErrorCodeSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema } from './chunk-CXOK55BY.js';
|
|
3
3
|
import { storageContract } from './chunk-ZM7KM6V3.js';
|
|
4
4
|
export { StorageDeleteFilesInputSchema, StorageDeleteSummarySchema, StorageFileKeyInputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, StorageListFilesInputSchema, StoragePresignDownloadInputSchema, StoragePresignUploadInputSchema, StoragePresignedUrlSchema } from './chunk-ZM7KM6V3.js';
|
|
5
5
|
import { aiContract } from './chunk-LD5PSL4C.js';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@h-ai/api-contract",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "1.0.0-beta.1",
|
|
5
5
|
"description": "Hai Framework public API contracts powered by oRPC and Zod.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"exports": {
|
|
@@ -43,8 +43,8 @@
|
|
|
43
43
|
"node": "^22.23.4 || ^24.22.1 || ^26.12.1"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@h-ai/core": "
|
|
47
|
-
"@h-ai/storage": "
|
|
46
|
+
"@h-ai/core": "1.0.0-beta.1",
|
|
47
|
+
"@h-ai/storage": "1.0.0-beta.1",
|
|
48
48
|
"@orpc/contract": "^1.15.5",
|
|
49
49
|
"zod": "^4.6.5"
|
|
50
50
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/iam/iam-schemas.ts","../src/iam/iam-contract.ts"],"names":[],"mappings":";;;;AAYA,IAAM,kBAAA,GAAqB,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,IAAI,CAAA,CAAE,QAAA,EAAS;AAUzD,IAAM,2BAAA,GAA8B,CAAA,CAAE,MAAA,CAAO,EAAE,WAAW,CAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,YAAY,SAAA,EAAW,eAAA,EAAiB,eAAe,CAAC,GAAG;AAUtI,IAAM,yBAAA,GAA4B,EAAE,MAAA,CAAO;AAAA,EAChD,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,gBAAgB,CAAA;AAAA,EACrC,SAAA,EAAW,EAAE,MAAA,CAAO;AAAA,IAClB,WAAW,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,GAAG,EAAE,QAAA,EAAS;AAAA,IACxC,UAAA,EAAY,EAAE,MAAA,CAAO;AAAA,MACnB,WAAW,CAAA,CAAE,MAAA,GAAS,MAAA,CAAO,CAAA,KAAA,KAAS,UAAU,gBAAgB,CAAA;AAAA,MAChE,KAAA,EAAO,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,MAChC,IAAA,EAAM,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,MAC/B,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,GAAG,CAAA,CAAE,GAAA,CAAI,GAAK,CAAA;AAAA,MACzC,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,GAAA,CAAI,EAAE,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA;AAAA,MAC1C,SAAA,EAAW,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,IAAI,GAAG,CAAA;AAAA,MACpC,cAAc,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,GAAG,EAAE,QAAA,EAAS;AAAA,MAC3C,IAAA,EAAM,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,EAAO,EAAG,EAAE,MAAA,EAAO,EAAG,CAAA,CAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,MAAM,CAAC,CAAC,CAAA,CAAE,QAAA;AAAS,KAC/F;AAAA,GACF;AACH,CAAC;AAkBM,IAAM,aAAA,GAAgB,EAAE,MAAA,CAAO;AAAA,EACpC,EAAA,EAAI,EAAE,MAAA,EAAO;AAAA,EACb,QAAA,EAAU,EAAE,MAAA,EAAO;AAAA,EACnB,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,OAAA,EAAS,EAAE,OAAA,EAAQ;AAAA,EACnB,WAAA,EAAa,EAAE,IAAA,CAAK,CAAC,aAAa,WAAW,CAAC,EAAE,QAAA,EAAS;AAAA,EACzD,aAAA,EAAe,EAAE,IAAA,CAAK,CAAC,UAAU,SAAA,EAAW,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAChE,kBAAkB,CAAA,CAAE,MAAA,CAAO,MAAK,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACtD,aAAa,CAAA,CAAE,MAAA,CAAO,MAAK,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACjD,kBAAA,EAAoB,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACzC,aAAA,EAAe,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACpC,aAAA,EAAe,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EACpC,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC9C,CAAC;AAgBM,IAAM,kBAAA,GAAqB,EAAE,MAAA,CAAO;AAAA,EACzC,WAAA,EAAa,EAAE,MAAA,EAAO;AAAA,EACtB,YAAA,EAAc,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAClC,SAAA,EAAW,EAAE,MAAA,EAAO;AAAA,EACpB,SAAA,EAAW,CAAA,CAAE,OAAA,CAAQ,QAAQ;AAC/B,CAAC;AAeM,IAAM,yBAAA,GAA4B,EAAE,MAAA,CAAO;AAAA;AAAA,EAEhD,uBAAuB,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EAClD,uBAAuB,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EAClD,gBAAA,EAAkB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACtC,gBAAA,EAAkB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACtC,cAAA,EAAgB,EAAE,OAAA,EAAQ;AAAA,EAC1B,WAAA,EAAa,EAAE,OAAA;AACjB,CAAC;AAyBM,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,IAAA,EAAM,aAAA;AAAA,EACN,MAAA,EAAQ,kBAAA;AAAA,EACR,KAAA,EAAO,EAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EACrC,WAAA,EAAa,EAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EAC3C,UAAA,EAAY,0BAA0B,QAAA;AACxC,CAAC;AAwBM,IAAM,oBAAA,GAAuB,cAAc,MAAA,CAAO;AAAA,EACvD,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAQ,CAAA;AAAA,EACzB,WAAA,EAAa,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,QAAQ;AACjC,CAAC;AAeM,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,cAAA,EAAgB,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;AAAA,EACpD,OAAA,EAAS,kBAAA;AAAA,EACT,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC5B,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC5B,CAAC;AAUM,IAAM,yBAAA,GAA4B,CAAA,CAAE,IAAA,CAAK,CAAC,aAAA,EAAe,eAAe,aAAA,EAAe,aAAA,EAAe,aAAA,EAAe,aAAa,CAAC;AAenI,IAAM,uBAAA,GAA0B,CAAA,CAAE,MAAA,CAAO,EAAE,UAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,GAAA,CAAI,CAAC,CAAA,EAAG,QAAA,EAAU,EAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,OAAA,EAAS,kBAAA,EAAoB,cAAA,EAAgB,EAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,EAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,IAAY;AAahM,IAAM,kCAAA,GAAqC,CAAA,CAAE,MAAA,CAAO,EAAE,YAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,GAAA,CAAI,CAAC,CAAA,EAAG,OAAA,EAAS,oBAAoB;AAczH,IAAM,qCAAqC,CAAA,CAAE,MAAA,CAAO,EAAE,KAAA,EAAO,CAAA,CAAE,QAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,aAAa,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,GAAG;AAUhH,IAAM,2BAAA,GAA8B,CAAA,CAAE,MAAA,CAAO,EAAE,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,EAAK,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,OAAA,EAAS,oBAAoB;AAU/K,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO,EAAE,UAAU,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,WAAW,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,EAAK,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,EAAG;AAU3H,IAAM,8BAAA,GAAiC,CAAA,CAAE,MAAA,CAAO,EAAE,QAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,EAAG,SAAA,EAAW,CAAA,CAAE,MAAA,IAAU;AAkDpG,IAAM,qBAAA,GAAwB,EAAE,MAAA,CAAO;AAAA,EAC5C,OAAA,EAAS,CAAA,CAAE,MAAA,CAAO,EAAE,SAAS,CAAA,CAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,OAAA,CAAQ,EAAE,OAAA,EAAS,OAAO,CAAA;AAAA,EACtE,kBAAkB,CAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,UAAA,EAAY,CAAA,CAAE,MAAM,CAAA,CAAE,MAAA,EAAQ,CAAA,EAAG,EAAE,QAAA,EAAS;AAAA,EAC/F,kBAAA,EAAoB,CAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,QAAA,EAAS;AAAA,EAChE,QAAA,EAAU,EAAE,MAAA,CAAO,EAAE,WAAW,CAAA,CAAE,MAAA,EAAO,EAAG,SAAA,EAAW,CAAA,CAAE,MAAA,IAAU,gBAAA,EAAkB,CAAA,CAAE,OAAA,EAAQ,EAAG,gBAAA,EAAkB,CAAA,CAAE,SAAQ,EAAG,aAAA,EAAe,CAAA,CAAE,OAAA,EAAQ,EAAG,kBAAA,EAAoB,EAAE,OAAA,EAAQ,EAAG,gBAAgB,CAAA,CAAE,MAAA,IAAU,mBAAA,EAAqB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,EAAG,qBAAqB,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS,EAAG,oBAAA,EAAsB,EAAE,OAAA,EAAQ,CAAE,QAAA,EAAS,EAAG,CAAA;AAAA,EACjW,QAAA,EAAU,EAAE,MAAA,CAAO,EAAE,SAAS,CAAA,CAAE,OAAA,IAAW,CAAA;AAAA,EAC3C,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,EAAE,QAAA,EAAU,EAAE,OAAA,EAAQ,EAAG,GAAA,EAAK,CAAA,CAAE,OAAA,EAAQ,EAAG,MAAM,CAAA,CAAE,OAAA,EAAQ,EAAG,KAAA,EAAO,CAAA,CAAE,OAAA,IAAW,GAAA,EAAK,CAAA,CAAE,OAAA,EAAQ,EAAG,CAAA;AAAA,EACpH,eAAe,CAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAAS,EAAE,OAAA,EAAQ,EAAG,IAAA,EAAM,CAAA,CAAE,KAAK,CAAC,OAAA,EAAS,OAAO,CAAC,GAAG,CAAA;AAAA,EAClF,GAAA,EAAK,CAAA,CAAE,MAAA,CAAO,EAAE,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,EAAG,cAAA,EAAgB,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA;AAAA,EAChE,UAAA,EAAY,yBAAA;AAAA,EACZ,EAAA,EAAI,EAAE,MAAA,CAAO,EAAE,SAAS,CAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,OAAO,CAAC,GAAG,KAAA,EAAO,CAAA,CAAE,QAAO,CAAE,QAAA,IAAY,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,EAAG,YAAY,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,EAAG,WAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,EAAG,OAAA,EAAS,EAAE,MAAA,EAAO,CAAE,UAAS,EAAG,eAAA,EAAiB,EAAE,MAAA,EAAO,CAAE,QAAA,EAAS,EAAG,CAAA;AAAA,EAC/P,OAAA,EAAS,CAAA,CAAE,MAAA,CAAO,EAAE,QAAQ,CAAA,CAAE,MAAA,EAAO,EAAG,aAAA,EAAe,EAAE,OAAA,EAAQ,CAAE,OAAA,CAAQ,KAAK,GAAG;AACrF,CAAC;AAeM,IAAM,sBAAA,GAAyB,EAAE,MAAA,CAAO;AAAA,EAC7C,cAAA,EAAgB,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;AAAA,EACpD,OAAA,EAAS,kBAAA;AAAA,EACT,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC5B,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AACxB,CAAC;AAcM,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EAC3C,aAAa,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA;AACjC,CAAC;AAcM,IAAM,qBAAA,GAAwB,EAAE,MAAA,CAAO;AAAA,EAC5C,OAAA,EAAS,kBAAA;AAAA,EACT,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC9B,CAAC;AAcM,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EAC3C,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA;AACtB,CAAC;AAcM,IAAM,0BAAA,GAA6B,EAAE,MAAA,CAAO;AAAA,EACjD,YAAA,EAAc,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAChC,CAAC;AAkBM,IAAM,yBAAA,GAA4B,EAAE,MAAA,CAAO;AAAA,EAChD,MAAA,EAAQ;AACV,CAAC;AAeM,IAAM,sBAAA,GAAyB,EAAE,MAAA,CAAO;AAAA,EAC7C,OAAA,EAAS,kBAAA;AAAA,EACT,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC1B,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC1B,OAAO,CAAA,CAAE,MAAA,EAAO,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,EACnC,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC9C,CAAC;AAeM,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EACnD,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC7B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC/B,CAAC;AAYM,IAAM,+BAAA,GAAkC,EAAE,MAAA,CAAO;AAAA,EACtD,UAAU,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EACrC,OAAO,CAAA,CAAE,MAAA,EAAO,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,EACnC,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AAC9C,CAAC;AAYM,IAAM,uBAAA,GAA0B,sBAAsB,MAAA,CAAO;AAAA,EAClE,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,EAAK,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAA,CAAE,QAAA,EAAS;AAAA,EACrD,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAE5B,SAAS,CAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,UAAU,CAAA,CAAA,KAAK,CAAA,KAAM,MAAA,GAAY,MAAA,GAAY,MAAM,MAAM;AACzG,CAAC;AAeM,IAAM,6BAAA,GAAgC,EAAE,MAAA,CAAO;AAAA,EACpD,WAAA,EAAa,EAAE,IAAA,CAAK,CAAC,aAAa,WAAW,CAAC,EAAE,QAAA,EAAS;AAAA,EACzD,aAAA,EAAe,EAAE,IAAA,CAAK,CAAC,UAAU,SAAA,EAAW,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAChE,gBAAA,EAAkB,CAAA,CAAE,MAAA,CAAO,IAAA,GAAO,QAAA,EAAS;AAAA,EAC3C,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC1B,OAAO,CAAA,CAAE,MAAA,EAAO,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,EACnC,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC1B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS;AAAA,EACrD,SAAS,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACtC,OAAA,EAAS,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACvB,CAAC;AAUM,IAAM,wBAAA,GAA2B,6BAAA,CAA8B,IAAA,CAAK,EAAE,QAAA,EAAU,MAAM,CAAA,CAAE,MAAA,CAAO,EAAE,OAAA,EAAS,CAAA,CAAE,QAAQ,IAAI,CAAA,CAAE,QAAA,EAAS,EAAG,aAAA,EAAe,CAAA,CAAE,QAAQ,QAAQ,CAAA,CAAE,QAAA,EAAS,EAAG;AAwBrL,IAAM,6BAAA,GAAgC,EAAE,MAAA,CAAO;AAAA,EACpD,WAAA,EAAa,EAAE,IAAA,CAAK,CAAC,aAAa,WAAW,CAAC,EAAE,QAAA,EAAS;AAAA,EACzD,aAAA,EAAe,EAAE,IAAA,CAAK,CAAC,UAAU,SAAA,EAAW,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAChE,kBAAkB,CAAA,CAAE,MAAA,CAAO,MAAK,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA,EACtD,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACpB,UAAU,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EACrC,OAAO,CAAA,CAAE,MAAA,EAAO,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,EACnC,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA,EAAS;AAAA,EACrD,OAAA,EAAS,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC9B,SAAS,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,EAAE,QAAA;AAC/B,CAAC;AAcM,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EAC3C,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AACtB,CAAC;AAeM,IAAM,gCAAA,GAAmC,EAAE,MAAA,CAAO;AAAA,EACvD,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACpB,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC/B,CAAC;AAkBM,IAAM,aAAA,GAAgB,EAAE,MAAA,CAAO;AAAA,EACpC,EAAA,EAAI,EAAE,MAAA,EAAO;AAAA,EACb,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAU,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC/B,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA;AACtB,CAAC;AAeM,IAAM,wBAAA,GAA2B,EAAE,MAAA,CAAO;AAAA,EAC/C,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAU,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA;AACxB,CAAC;AAcM,IAAM,wBAAA,GAA2B,EAAE,MAAA,CAAO;AAAA,EAC/C,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACpB,MAAM,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EACjC,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAC1B,CAAC;AAYM,IAAM,0BAA0B,CAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,KAAA,EAAO,QAAQ,CAAC;AAkBhE,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,mBAAA,EAAqB,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,GAAS,IAAA,EAAK,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAG,CAAC,CAAA,CAAE,GAAA,CAAI,GAAI,CAAA,CAAE,OAAA,GAAU,SAAA,CAAU,CAAA,KAAA,KAAS,KAAA,IAAS,EAAE,CAAA;AAAA,EAClH,EAAA,EAAI,EAAE,MAAA,EAAO;AAAA,EACb,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,IAAA,EAAM,wBAAwB,QAAA,EAAS;AAAA,EACvC,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA,EAAK;AAAA,EACzB,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,IAAA;AACtB,CAAC;AAYM,IAAM,6BAAA,GAAgC,sBAAsB,MAAA,CAAO;AAAA,EACxE,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,IAAA,EAAM,wBAAwB,QAAA;AAChC,CAAC;AAeM,IAAM,8BAAA,GAAiC,EAAE,MAAA,CAAO;AAAA,EACrD,mBAAA,EAAqB,EAAE,KAAA,CAAM,CAAA,CAAE,QAAO,CAAE,IAAA,GAAO,GAAA,CAAI,CAAC,EAAE,GAAA,CAAI,GAAG,CAAC,CAAA,CAAE,GAAA,CAAI,GAAI,CAAA,CAAE,OAAA,CAAQ,EAAE,CAAA;AAAA,EACpF,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACjC,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,IAAA,EAAM,wBAAwB,QAAA;AAChC,CAAC;;;ACxtBD,IAAM,sBAAA,GAAyB,gBAAgB,mBAAmB,CAAA;AAClE,IAAM,gBAAA,GAAmB,gBAAgB,aAAa,CAAA;AACtD,IAAM,gBAAA,GAAmB,gBAAgB,aAAa,CAAA;AAY/C,IAAM,WAAA,GAAc;AAAA,EACzB,IAAA,EAAM;AAAA,IACJ,aAAA,EAAe,KAAA,CAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,eAAA,EAAiB,WAAA,EAAa,wBAAA,EAA0B,OAAA,EAAS,uCAAA,EAAyC,IAAA,EAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,CAC3K,KAAA,CAAM,2BAA2B,CAAA,CACjC,MAAA,CAAO,eAAA,CAAgB,yBAAyB,CAAC,CAAA;AAAA,IACpD,cAAA,EAAgB,KAAA,CAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,sBAAA,EAAwB,WAAA,EAAa,yBAAA,EAA2B,OAAA,EAAS,qDAAA,EAAuD,IAAA,EAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,CAClM,KAAA,CAAM,4BAA4B,CAAA,CAClC,MAAA,CAAO,eAAA,CAAgB,8BAA8B,CAAC,CAAA;AAAA,IACzD,YAAA,EAAc,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,cAAA,EAAgB,WAAA,EAAa,uBAAA,EAAyB,OAAA,EAAS,qCAAA,EAAuC,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,CACrK,OAAO,eAAA,CAAgB,qBAAA,CAAsB,QAAA,EAAU,CAAC,CAAA;AAAA,IAC3D,aAAA,EAAe,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,sBAAA,EAAwB,WAAA,EAAa,wBAAA,EAA0B,OAAA,EAAS,oCAAA,EAAsC,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC/K,KAAA,CAAM,2BAA2B,CAAA,CACjC,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,aAAA,EAAe,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,kBAAA,EAAoB,WAAA,EAAa,wBAAA,EAA0B,OAAA,EAAS,YAAA,EAAc,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EACnJ,KAAA,CAAM,uBAAuB,CAAA,CAC7B,MAAA,CAAO,sBAAsB,CAAA;AAAA,IAChC,oBAAA,EAAsB,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,8BAAA,EAAgC,WAAA,EAAa,+BAAA,EAAiC,OAAA,EAAS,wBAAA,EAA0B,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EACzL,KAAA,CAAM,kCAAkC,CAAA,CACxC,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,oBAAA,EAAsB,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,8BAAA,EAAgC,WAAA,EAAa,+BAAA,EAAiC,OAAA,EAAS,wBAAA,EAA0B,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EACzL,KAAA,CAAM,kCAAkC,CAAA,CACxC,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,KAAA,EAAO,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,aAAA,EAAe,WAAA,EAAa,gBAAA,EAAkB,OAAA,EAAS,gBAAA,EAAkB,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAClI,KAAA,CAAM,mBAAmB,CAAA,CACzB,MAAA,CAAO,sBAAsB,CAAA;AAAA,IAChC,YAAA,EAAc,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,uBAAA,EAAyB,OAAA,EAAS,WAAA,EAAa,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC/I,KAAA,CAAM,sBAAsB,CAAA,CAC5B,MAAA,CAAO,sBAAsB,CAAA;AAAA,IAChC,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,cAAA,EAAgB,WAAA,EAAa,iBAAA,EAAmB,OAAA,EAAS,QAAA,EAAU,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC7H,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,YAAA,EAAc,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,qBAAA,EAAuB,WAAA,EAAa,uBAAA,EAAyB,OAAA,EAAS,gEAAA,EAAkE,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EACxM,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,WAAA,EAAa,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,UAAA,EAAY,aAAa,sBAAA,EAAwB,OAAA,EAAS,qCAAqC,IAAA,EAAM,CAAC,OAAO,MAAM,CAAA,EAAG,CAAA,CAC7J,MAAA,CAAO,eAAA,CAAgB,oBAAoB,CAAC,CAAA;AAAA,IAC/C,OAAA,EAAS,KAAA,CAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,eAAA,EAAiB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,sBAAA,EAAwB,IAAA,EAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,CAC9I,KAAA,CAAM,0BAA0B,CAAA,CAChC,MAAA,CAAO,eAAA,CAAgB,yBAAyB,CAAC,CAAA;AAAA,IACpD,OAAA,EAAS,KAAA,CAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,gBAAA,EAAkB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,UAAA,EAAY,IAAA,EAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,CAAA,CACnI,KAAA,CAAM,qBAAqB,CAAA,CAC3B,MAAA,CAAO,eAAA,CAAgB,oBAAoB,CAAC,CAAA;AAAA,IAC/C,QAAA,EAAU,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,gBAAA,EAAkB,WAAA,EAAa,mBAAA,EAAqB,OAAA,EAAS,oBAAA,EAAsB,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC/I,KAAA,CAAM,sBAAsB,CAAA,CAC5B,MAAA,CAAO,sBAAsB,CAAA;AAAA,IAChC,cAAA,EAAgB,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,uBAAA,EAAyB,WAAA,EAAa,yBAAA,EAA2B,OAAA,EAAS,8BAAA,EAAgC,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC5K,KAAA,CAAM,4BAA4B,CAAA,CAClC,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,iBAAA,EAAmB,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,UAAA,EAAY,WAAA,EAAa,4BAAA,EAA8B,OAAA,EAAS,qBAAA,EAAuB,MAAM,CAAC,KAAA,EAAO,MAAM,CAAA,EAAG,EAC3J,KAAA,CAAM,+BAA+B,CAAA,CACrC,MAAA,CAAO,gBAAgB;AAAA,GAC5B;AAAA,EACA,KAAA,EAAO;AAAA,IACL,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,mBAAA,EAAqB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,+CAAA,EAAiD,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EAC3K,KAAA,CAAM,wBAAwB,CAAA,CAC9B,MAAA,CAAO,gBAAgB,CAAA;AAAA,IAC1B,IAAA,EAAM,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,YAAA,EAAc,WAAA,EAAa,gBAAA,EAAkB,OAAA,EAAS,YAAA,EAAc,IAAA,EAAM,CAAC,OAAO,OAAO,CAAA,EAAG,CAAA,CAC5H,KAAA,CAAM,uBAAuB,CAAA,CAC7B,MAAA,CAAO,eAAA,CAAgB,eAAA,CAAgB,aAAa,CAAC,CAAC,CAAA;AAAA,IACzD,GAAA,EAAK,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,eAAA,EAAiB,OAAA,EAAS,UAAA,EAAY,IAAA,EAAM,CAAC,OAAO,OAAO,CAAA,EAAG,CAAA,CAC7H,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,eAAA,CAAgB,aAAA,CAAc,QAAA,EAAU,CAAC,CAAA;AAAA,IACnD,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,YAAA,EAAc,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EAClI,KAAA,CAAM,6BAA6B,CAAA,CACnC,MAAA,CAAO,gBAAgB,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EACtI,KAAA,CAAM,6BAA6B,CAAA,CACnC,MAAA,CAAO,gBAAgB,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,UAAU,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EACzI,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,mBAAmB,CAAA;AAAA,IAC7B,aAAA,EAAe,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,gCAAA,EAAkC,WAAA,EAAa,yBAAA,EAA2B,OAAA,EAAS,qBAAA,EAAuB,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EAC5K,KAAA,CAAM,gCAAgC,CAAA,CACtC,MAAA,CAAO,mBAAmB;AAAA,GAC/B;AAAA,EACA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,YAAA,EAAc,WAAA,EAAa,gBAAA,EAAkB,OAAA,EAAS,YAAA,EAAc,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,CAAA,CAC5H,OAAO,eAAA,CAAgB,eAAA,CAAgB,aAAa,CAAC,CAAC,CAAA;AAAA,IACzD,GAAA,EAAK,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,eAAA,EAAiB,OAAA,EAAS,UAAA,EAAY,IAAA,EAAM,CAAC,OAAO,OAAO,CAAA,EAAG,CAAA,CAC7H,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,eAAA,CAAgB,aAAA,CAAc,QAAA,EAAU,CAAC,CAAA;AAAA,IACnD,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,YAAA,EAAc,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EAClI,KAAA,CAAM,wBAAwB,CAAA,CAC9B,MAAA,CAAO,gBAAgB,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EACtI,KAAA,CAAM,wBAAwB,CAAA,CAC9B,MAAA,CAAO,gBAAgB,CAAA;AAAA,IAC1B,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,UAAU,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,kBAAA,EAAoB,OAAA,EAAS,aAAA,EAAe,MAAM,CAAC,KAAA,EAAO,OAAO,CAAA,EAAG,EACzI,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,mBAAmB;AAAA,GAC/B;AAAA,EACA,WAAA,EAAa;AAAA,IACX,sBAAA,EAAwB,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,4CAAA,EAA8C,WAAA,EAAa,qCAAA,EAAuC,OAAA,EAAS,qCAAA,EAAuC,IAAA,EAAM,CAAC,KAAA,EAAO,aAAa,CAAA,EAAG,CAAA,CAClO,KAAA,CAAM,mBAAA,CAAoB,IAAA,CAAK,EAAE,EAAA,EAAI,IAAA,EAAM,mBAAA,EAAqB,IAAA,EAAM,CAAC,CAAA,CACvE,OAAO,mBAAmB,CAAA;AAAA,IAC7B,IAAA,EAAM,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,kBAAA,EAAoB,WAAA,EAAa,sBAAA,EAAwB,OAAA,EAAS,kBAAA,EAAoB,IAAA,EAAM,CAAC,OAAO,aAAa,CAAA,EAAG,CAAA,CACpJ,KAAA,CAAM,6BAA6B,CAAA,CACnC,MAAA,CAAO,eAAA,CAAgB,eAAA,CAAgB,mBAAmB,CAAC,CAAC,CAAA;AAAA,IAC/D,GAAA,EAAK,KAAA,CAAM,EAAE,MAAA,EAAQ,KAAA,EAAO,IAAA,EAAM,uBAAA,EAAyB,WAAA,EAAa,qBAAA,EAAuB,OAAA,EAAS,gBAAA,EAAkB,IAAA,EAAM,CAAC,OAAO,aAAa,CAAA,EAAG,CAAA,CACrJ,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,eAAA,CAAgB,mBAAA,CAAoB,QAAA,EAAU,CAAC,CAAA;AAAA,IACzD,MAAA,EAAQ,KAAA,CAAM,EAAE,MAAA,EAAQ,MAAA,EAAQ,MAAM,kBAAA,EAAoB,WAAA,EAAa,wBAAA,EAA0B,OAAA,EAAS,mBAAA,EAAqB,IAAA,EAAM,CAAC,KAAA,EAAO,aAAa,CAAA,EAAG,CAAA,CAC1J,KAAA,CAAM,8BAA8B,CAAA,CACpC,MAAA,CAAO,eAAA,CAAgB,mBAAmB,CAAC,CAAA;AAAA,IAC9C,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,UAAU,IAAA,EAAM,uBAAA,EAAyB,WAAA,EAAa,wBAAA,EAA0B,OAAA,EAAS,mBAAA,EAAqB,MAAM,CAAC,KAAA,EAAO,aAAa,CAAA,EAAG,EACjK,KAAA,CAAM,oBAAoB,CAAA,CAC1B,MAAA,CAAO,mBAAmB;AAAA;AAEjC","file":"chunk-RN3KGYTF.js","sourcesContent":["/**\n * @h-ai/api-contract — IAM 领域 Schema\n *\n * 包含用户、Token、角色、权限以及相关 input/data 的 Zod Schema 定义。\n * 一次性输出包装在 contract 中内联,仅保留跨接口、跨层复用的数据结构。\n * @module iam-schemas\n */\n\nimport type { HaiResult } from '@h-ai/core'\nimport { z } from 'zod'\nimport { PaginationQuerySchema } from '../common/pagination-schemas.js'\n\nconst captchaProofSchema = z.string().min(1).max(4096).optional()\n\n/**\n * 交互挑战生成入参,证明只能用于指定入口。\n * @example\n * ```ts\n * import { IamCreateCaptchaInputSchema } from '@h-ai/api-contract'\n * const input = IamCreateCaptchaInputSchema.parse({ operation: 'login' })\n * ```\n */\nexport const IamCreateCaptchaInputSchema = z.object({ operation: z.enum(['login', 'register', 'sendOtp', 'passwordReset', 'renewPassword']) })\n\n/**\n * 自托管 ALTCHA 可公开挑战;不会返回签名秘密。\n * @example\n * ```ts\n * import { IamCaptchaChallengeSchema } from '@h-ai/api-contract'\n * function parseResponse(value: unknown) { return IamCaptchaChallengeSchema.parse(value) }\n * ```\n */\nexport const IamCaptchaChallengeSchema = z.object({\n id: z.string().regex(/^[a-f0-9]{64}$/),\n challenge: z.object({\n signature: z.string().max(256).optional(),\n parameters: z.object({\n algorithm: z.string().refine(value => value === 'PBKDF2/SHA-256'),\n nonce: z.string().min(1).max(256),\n salt: z.string().min(1).max(256),\n cost: z.number().int().min(100).max(50000),\n keyLength: z.number().int().min(16).max(64),\n keyPrefix: z.string().min(1).max(128),\n keySignature: z.string().max(256).optional(),\n data: z.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(),\n }),\n }),\n})\n\n/**\n * 用户基础信息 Schema。\n * @example\n * ```ts\n * import { IamUserSchema } from '@h-ai/api-contract'\n *\n * const value = IamUserSchema.parse({\n * id: 'example-1',\n * username: 'alice',\n * enabled: true,\n * createdAt: null,\n * updatedAt: null\n * })\n * void value\n * ```\n */\nexport const IamUserSchema = z.object({\n id: z.string(),\n username: z.string(),\n email: z.string().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n enabled: z.boolean(),\n accountType: z.enum(['permanent', 'temporary']).optional(),\n accountStatus: z.enum(['active', 'dormant', 'closed']).optional(),\n accountExpiresAt: z.coerce.date().nullable().optional(),\n lastLoginAt: z.coerce.date().nullable().optional(),\n mustChangePassword: z.boolean().optional(),\n emailVerified: z.boolean().optional(),\n phoneVerified: z.boolean().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/**\n * Token 对 Schema。\n * @example\n * ```ts\n * import { IamTokenPairSchema } from '@h-ai/api-contract'\n *\n * const value = IamTokenPairSchema.parse({\n * accessToken: 'example-only-access',\n * expiresIn: 0,\n * tokenType: 'Bearer'\n * })\n * void value\n * ```\n */\nexport const IamTokenPairSchema = z.object({\n accessToken: z.string(),\n refreshToken: z.string().optional(),\n expiresIn: z.number(),\n tokenType: z.literal('Bearer'),\n})\n\n/**\n * 协议展示 Schema。\n * @example\n * ```ts\n * import { IamAgreementDisplaySchema } from '@h-ai/api-contract'\n *\n * const value = IamAgreementDisplaySchema.parse({\n * showOnRegister: true,\n * showOnLogin: true\n * })\n * void value\n * ```\n */\nexport const IamAgreementDisplaySchema = z.object({\n /** 配置中的 Markdown 原文由客户端安全渲染。 */\n userAgreementMarkdown: z.string().min(1).optional(),\n privacyPolicyMarkdown: z.string().min(1).optional(),\n userAgreementUrl: z.string().optional(),\n privacyPolicyUrl: z.string().optional(),\n showOnRegister: z.boolean(),\n showOnLogin: z.boolean(),\n})\n\n/**\n * 登录结果业务数据 Schema。\n * @example\n * ```ts\n * import { IamAuthResultSchema } from '@h-ai/api-contract'\n *\n * const value = IamAuthResultSchema.parse({\n * user: {\n * id: 'example-1',\n * username: 'alice',\n * enabled: true,\n * createdAt: null,\n * updatedAt: null\n * },\n * tokens: {\n * accessToken: 'example-only-access',\n * expiresIn: 0,\n * tokenType: 'Bearer'\n * }\n * })\n * void value\n * ```\n */\nexport const IamAuthResultSchema = z.object({\n user: IamUserSchema,\n tokens: IamTokenPairSchema,\n roles: z.array(z.string()).default([]),\n permissions: z.array(z.string()).default([]),\n agreements: IamAgreementDisplaySchema.optional(),\n})\n\n/**\n * 当前会话用户信息;包含服务端重新校验后的角色与权限快照。\n * @example\n * ```ts\n * import { IamCurrentUserSchema } from '@h-ai/api-contract'\n *\n * const value = IamCurrentUserSchema.parse({\n * id: 'example-1',\n * username: 'alice',\n * enabled: true,\n * createdAt: null,\n * updatedAt: null,\n * roles: [\n * 'example'\n * ],\n * permissions: [\n * 'example'\n * ]\n * })\n * void value\n * ```\n */\nexport const IamCurrentUserSchema = IamUserSchema.extend({\n roles: z.array(z.string()),\n permissions: z.array(z.string()),\n})\n\n/**\n * 密码登录入参 Schema。\n * @example\n * ```ts\n * import { IamLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamLoginInputSchema.parse({\n * identifier: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamLoginInputSchema = z.object({\n expectedUserId: z.string().min(1).max(200).optional(),\n captcha: captchaProofSchema,\n identifier: z.string().min(1),\n password: z.string().min(1),\n})\n\n/**\n * 可以尝试刷新或恢复登录的IAM会话错误码;密码错误、初始/过期改密与操作二次认证不属于会话恢复。\n * @example\n * ```ts\n * import { IamSessionErrorCodeSchema } from '@h-ai/api-contract'\n * const expired = IamSessionErrorCodeSchema.safeParse('hai:iam:103').success\n * ```\n */\nexport const IamSessionErrorCodeSchema = z.enum(['hai:iam:101', 'hai:iam:102', 'hai:iam:103', 'hai:iam:105', 'hai:iam:106', 'hai:iam:107'])\n\n/**\n * LDAP 登录与密码找回入参。\n * @example\n * ```ts\n * import { IamLdapLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamLdapLoginInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamLdapLoginInputSchema = z.object({ username: z.string().trim().min(1), password: z.string().min(1), captcha: captchaProofSchema, expectedUserId: z.string().min(1).max(200).optional() })\n/**\n * IamRequestPasswordResetInput 数据的运行时 Zod 校验约束。\n * @example\n * ```ts\n * import { IamRequestPasswordResetInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamRequestPasswordResetInputSchema.parse({\n * identifier: 'alice'\n * })\n * void value\n * ```\n */\nexport const IamRequestPasswordResetInputSchema = z.object({ identifier: z.string().trim().min(1), captcha: captchaProofSchema })\n/**\n * IamConfirmPasswordResetInput 数据的运行时 Zod 校验约束。\n * @example\n * ```ts\n * import { IamConfirmPasswordResetInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamConfirmPasswordResetInputSchema.parse({\n * token: 'example-only-token',\n * newPassword: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamConfirmPasswordResetInputSchema = z.object({ token: z.string().min(1), newPassword: z.string().min(1) })\n\n/**\n * 无普通会话的首次或过期改密;必须重新验证原密码。\n * @example\n * ```ts\n * import { IamRenewPasswordInputSchema } from '@h-ai/api-contract'\n * const input = IamRenewPasswordInputSchema.parse({ identifier: 'alice', password: 'Initial123!', newPassword: 'Chosen456!' })\n * ```\n */\nexport const IamRenewPasswordInputSchema = z.object({ identifier: z.string().trim().min(1), password: z.string().min(1), newPassword: z.string().min(1), captcha: captchaProofSchema })\n\n/**\n * 对当前会话的指定操作重新鉴别;操作本身仍需独立授权。\n * @example\n * ```ts\n * import { IamReauthenticateInputSchema } from '@h-ai/api-contract'\n * const input = IamReauthenticateInputSchema.parse({ password: 'ChosenPassword123!', operation: 'iam.users.delete' })\n * ```\n */\nexport const IamReauthenticateInputSchema = z.object({ password: z.string().min(1), operation: z.string().trim().min(1).max(128) })\n\n/**\n * 短期、用途绑定的单次操作证明,不能持久化到浏览器存储。\n * @example\n * ```ts\n * import { IamReauthenticationProofSchema } from '@h-ai/api-contract'\n * const proof = IamReauthenticationProofSchema.parse({ ticket: 'example-only-ticket', expiresAt: Date.now() + 300000 })\n * ```\n */\nexport const IamReauthenticationProofSchema = z.object({ ticket: z.string().min(1), expiresAt: z.number() })\n\n/**\n * 认证页面公开配置白名单,独立于服务端连接/凭据配置。\n * @example\n * ```ts\n * import { IamPublicConfigSchema } from '@h-ai/api-contract'\n *\n * const value = IamPublicConfigSchema.parse({\n * password: {\n * minLength: 0,\n * maxLength: 0,\n * requireUppercase: true,\n * requireLowercase: true,\n * requireNumber: true,\n * requireSpecialChar: true,\n * expirationDays: 0\n * },\n * register: {\n * enabled: true\n * },\n * login: {\n * password: true,\n * otp: true,\n * ldap: true,\n * email: true,\n * sms: true\n * },\n * passwordReset: {\n * enabled: true,\n * mode: 'email'\n * },\n * otp: {\n * length: 0,\n * resendInterval: 0\n * },\n * agreements: {\n * showOnRegister: true,\n * showOnLogin: true\n * },\n * ui: {\n * variant: 'card'\n * },\n * session: {\n * maxAge: 0\n * }\n * })\n * void value\n * ```\n */\nexport const IamPublicConfigSchema = z.object({\n captcha: z.object({ enabled: z.boolean() }).default({ enabled: false }),\n reauthentication: z.object({ enabled: z.boolean(), operations: z.array(z.string()) }).optional(),\n initialCredentials: z.object({ enabled: z.boolean() }).optional(),\n password: z.object({ minLength: z.number(), maxLength: z.number(), requireUppercase: z.boolean(), requireLowercase: z.boolean(), requireNumber: z.boolean(), requireSpecialChar: z.boolean(), expirationDays: z.number(), minCharacterClasses: z.number().optional(), preventSamePassword: z.boolean().optional(), requireInitialChange: z.boolean().optional() }),\n register: z.object({ enabled: z.boolean() }),\n login: z.object({ password: z.boolean(), otp: z.boolean(), ldap: z.boolean(), email: z.boolean(), sms: z.boolean() }),\n passwordReset: z.object({ enabled: z.boolean(), mode: z.enum(['email', 'phone']) }),\n otp: z.object({ length: z.number(), resendInterval: z.number() }),\n agreements: IamAgreementDisplaySchema,\n ui: z.object({ variant: z.enum(['card', 'split']), title: z.string().optional(), subtitle: z.string().optional(), brandTitle: z.string().optional(), brandText: z.string().optional(), logoUrl: z.string().optional(), illustrationUrl: z.string().optional() }),\n session: z.object({ maxAge: z.number(), endOnPageHide: z.boolean().default(false) }),\n})\n\n/**\n * OTP 登录入参 Schema。\n * @example\n * ```ts\n * import { IamOtpLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamOtpLoginInputSchema.parse({\n * identifier: 'alice',\n * code: 'example-1'\n * })\n * void value\n * ```\n */\nexport const IamOtpLoginInputSchema = z.object({\n expectedUserId: z.string().min(1).max(200).optional(),\n captcha: captchaProofSchema,\n identifier: z.string().min(1),\n code: z.string().min(1),\n})\n\n/**\n * 登出入参 Schema。\n * 仅撤销调用方持有的完整 accessToken;省略时使用 Authorization Bearer,二者均无值则失败。\n * access 已到期仍可撤销关联 refresh;此入口不按 userId 撤销,也不授予任何身份权限。\n * @example\n * ```ts\n * import { IamLogoutInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamLogoutInputSchema.parse({})\n * void value\n * ```\n */\nexport const IamLogoutInputSchema = z.object({\n accessToken: z.string().min(1).optional(),\n})\n\n/**\n * 发送 OTP 入参 Schema。\n * @example\n * ```ts\n * import { IamSendOtpInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamSendOtpInputSchema.parse({\n * identifier: 'alice'\n * })\n * void value\n * ```\n */\nexport const IamSendOtpInputSchema = z.object({\n captcha: captchaProofSchema,\n identifier: z.string().min(1),\n})\n\n/**\n * 发送 OTP 业务数据 Schema。\n * @example\n * ```ts\n * import { IamSendOtpDataSchema } from '@h-ai/api-contract'\n *\n * const value = IamSendOtpDataSchema.parse({\n * expiresAt: null\n * })\n * void value\n * ```\n */\nexport const IamSendOtpDataSchema = z.object({\n expiresAt: z.coerce.date(),\n})\n\n/**\n * Token 刷新入参 Schema。\n * @example\n * ```ts\n * import { IamRefreshTokenInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamRefreshTokenInputSchema.parse({\n * refreshToken: 'example-only-refresh'\n * })\n * void value\n * ```\n */\nexport const IamRefreshTokenInputSchema = z.object({\n refreshToken: z.string().min(1),\n})\n\n/**\n * Token 刷新业务数据 Schema。\n * @example\n * ```ts\n * import { IamRefreshTokenDataSchema } from '@h-ai/api-contract'\n *\n * const value = IamRefreshTokenDataSchema.parse({\n * tokens: {\n * accessToken: 'example-only-access',\n * expiresIn: 0,\n * tokenType: 'Bearer'\n * }\n * })\n * void value\n * ```\n */\nexport const IamRefreshTokenDataSchema = z.object({\n tokens: IamTokenPairSchema,\n})\n\n/**\n * 注册入参 Schema。\n * @example\n * ```ts\n * import { IamRegisterInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamRegisterInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamRegisterInputSchema = z.object({\n captcha: captchaProofSchema,\n username: z.string().min(1),\n password: z.string().min(1),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/**\n * 修改密码入参 Schema。\n * @example\n * ```ts\n * import { IamChangePasswordInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamChangePasswordInputSchema.parse({\n * oldPassword: 'example',\n * newPassword: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamChangePasswordInputSchema = z.object({\n oldPassword: z.string().min(1),\n newPassword: z.string().min(1),\n})\n\n/**\n * 当前用户更新入参 Schema。\n * @example\n * ```ts\n * import { IamUpdateCurrentUserInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamUpdateCurrentUserInputSchema.parse({})\n * void value\n * ```\n */\nexport const IamUpdateCurrentUserInputSchema = z.object({\n username: z.string().min(1).optional(),\n email: z.string().email().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n phone: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/**\n * 用户列表查询入参 Schema。\n * @example\n * ```ts\n * import { IamListUsersInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamListUsersInputSchema.parse({})\n * void value\n * ```\n */\nexport const IamListUsersInputSchema = PaginationQuerySchema.extend({\n roleCode: z.string().trim().min(1).max(100).optional(),\n search: z.string().optional(),\n // 注意:HTTP query 是字符串,使用枚举 + transform 避免 z.coerce.boolean 的 'false' → true 陷阱。\n enabled: z.enum(['true', 'false']).optional().transform(v => v === undefined ? undefined : v === 'true'),\n})\n\n/**\n * Admin 创建用户入参 Schema。\n * @example\n * ```ts\n * import { IamAdminCreateUserInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamAdminCreateUserInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamAdminCreateUserInputSchema = z.object({\n accountType: z.enum(['permanent', 'temporary']).optional(),\n accountStatus: z.enum(['active', 'dormant', 'closed']).optional(),\n accountExpiresAt: z.coerce.date().optional(),\n username: z.string().min(1),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n password: z.string().min(1),\n displayName: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n roleIds: z.array(z.string()).optional(),\n enabled: z.boolean().optional(),\n})\n\n/**\n * 管理端单次邀请不接收共享初始密码;初始账号必须启用且激活。\n * @example\n * ```ts\n * import { IamInviteUserInputSchema } from '@h-ai/api-contract'\n * const input = IamInviteUserInputSchema.parse({ username: 'alice', email: 'alice@example.com' })\n * ```\n */\nexport const IamInviteUserInputSchema = IamAdminCreateUserInputSchema.omit({ password: true }).extend({ enabled: z.literal(true).optional(), accountStatus: z.literal('active').optional() })\n\n/**\n * 单次邀请的管理端输入。\n * @example\n * ```ts\n * import type { IamInviteUserInput } from '@h-ai/api-contract'\n * const input: IamInviteUserInput = { username: 'alice', email: 'alice@example.com' }\n * ```\n */\nexport type IamInviteUserInput = z.infer<typeof IamInviteUserInputSchema>\n\n/**\n * Admin 更新用户入参 Schema。\n * @example\n * ```ts\n * import { IamAdminUpdateUserInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamAdminUpdateUserInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport const IamAdminUpdateUserInputSchema = z.object({\n accountType: z.enum(['permanent', 'temporary']).optional(),\n accountStatus: z.enum(['active', 'dormant', 'closed']).optional(),\n accountExpiresAt: z.coerce.date().nullable().optional(),\n id: z.string().min(1),\n username: z.string().min(1).optional(),\n email: z.string().email().optional(),\n phone: z.string().optional(),\n displayName: z.string().optional(),\n avatarUrl: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n enabled: z.boolean().optional(),\n roleIds: z.array(z.string()).optional(),\n})\n\n/**\n * Admin 删除用户入参 Schema。\n * @example\n * ```ts\n * import { IamUserIdInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamUserIdInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport const IamUserIdInputSchema = z.object({\n id: z.string().min(1),\n})\n\n/**\n * Admin 重置密码入参 Schema。\n * @example\n * ```ts\n * import { IamAdminResetPasswordInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamAdminResetPasswordInputSchema.parse({\n * id: 'example-1',\n * newPassword: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport const IamAdminResetPasswordInputSchema = z.object({\n id: z.string().min(1),\n newPassword: z.string().min(1),\n})\n\n/**\n * 角色基础信息 Schema。\n * @example\n * ```ts\n * import { IamRoleSchema } from '@h-ai/api-contract'\n *\n * const value = IamRoleSchema.parse({\n * id: 'example-1',\n * code: 'example-1',\n * name: 'Example',\n * createdAt: null,\n * updatedAt: null\n * })\n * void value\n * ```\n */\nexport const IamRoleSchema = z.object({\n id: z.string(),\n code: z.string(),\n name: z.string(),\n description: z.string().optional(),\n isSystem: z.boolean().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n})\n\n/**\n * 创建角色入参 Schema。\n * @example\n * ```ts\n * import { IamCreateRoleInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamCreateRoleInputSchema.parse({\n * code: 'example-1',\n * name: 'Example'\n * })\n * void value\n * ```\n */\nexport const IamCreateRoleInputSchema = z.object({\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n isSystem: z.boolean().optional(),\n})\n\n/**\n * 更新角色入参 Schema。\n * @example\n * ```ts\n * import { IamUpdateRoleInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamUpdateRoleInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport const IamUpdateRoleInputSchema = z.object({\n id: z.string().min(1),\n name: z.string().min(1).optional(),\n description: z.string().optional(),\n})\n\n/**\n * 权限类型 Schema。\n * @example\n * ```ts\n * import { IamPermissionTypeSchema } from '@h-ai/api-contract'\n *\n * const value = IamPermissionTypeSchema.parse('menu')\n * void value\n * ```\n */\nexport const IamPermissionTypeSchema = z.enum(['menu', 'api', 'button'])\n\n/**\n * 权限基础信息 Schema。\n * @example\n * ```ts\n * import { IamPermissionSchema } from '@h-ai/api-contract'\n *\n * const value = IamPermissionSchema.parse({\n * id: 'example-1',\n * code: 'example-1',\n * name: 'Example',\n * createdAt: null,\n * updatedAt: null\n * })\n * void value\n * ```\n */\nexport const IamPermissionSchema = z.object({\n sensitiveOperations: z.array(z.string().trim().min(1).max(128)).max(1000).nullish().transform(value => value ?? []),\n id: z.string(),\n code: z.string(),\n name: z.string(),\n description: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n resource: z.string().optional(),\n action: z.string().optional(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n})\n\n/**\n * 权限列表查询入参 Schema。\n * @example\n * ```ts\n * import { IamListPermissionsInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamListPermissionsInputSchema.parse({})\n * void value\n * ```\n */\nexport const IamListPermissionsInputSchema = PaginationQuerySchema.extend({\n search: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n})\n\n/**\n * 创建权限入参 Schema。\n * @example\n * ```ts\n * import { IamCreatePermissionInputSchema } from '@h-ai/api-contract'\n *\n * const value = IamCreatePermissionInputSchema.parse({\n * code: 'example-1',\n * name: 'Example'\n * })\n * void value\n * ```\n */\nexport const IamCreatePermissionInputSchema = z.object({\n sensitiveOperations: z.array(z.string().trim().min(1).max(128)).max(1000).default([]),\n code: z.string().min(1),\n name: z.string().min(1),\n description: z.string().optional(),\n resource: z.string().optional(),\n action: z.string().optional(),\n type: IamPermissionTypeSchema.optional(),\n})\n\n/**\n * 账号密码登录请求。\n * @example\n * ```ts\n * import type { IamLoginInput } from '@h-ai/api-contract'\n * import { IamLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamLoginInput = IamLoginInputSchema.parse({\n * identifier: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamLoginInput = z.infer<typeof IamLoginInputSchema>\n/**\n * LDAP 登录请求。\n * @example\n * ```ts\n * import type { IamLdapLoginInput } from '@h-ai/api-contract'\n * import { IamLdapLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamLdapLoginInput = IamLdapLoginInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamLdapLoginInput = z.infer<typeof IamLdapLoginInputSchema>\n/**\n * 允许下发客户端的身份认证配置。\n * @example\n * ```ts\n * import type { IamPublicConfig } from '@h-ai/api-contract'\n * import { IamPublicConfigSchema } from '@h-ai/api-contract'\n *\n * const value: IamPublicConfig = IamPublicConfigSchema.parse({\n * password: {\n * minLength: 0,\n * maxLength: 0,\n * requireUppercase: true,\n * requireLowercase: true,\n * requireNumber: true,\n * requireSpecialChar: true,\n * expirationDays: 0\n * },\n * register: {\n * enabled: true\n * },\n * login: {\n * password: true,\n * otp: true,\n * ldap: true,\n * email: true,\n * sms: true\n * },\n * passwordReset: {\n * enabled: true,\n * mode: 'email'\n * },\n * otp: {\n * length: 0,\n * resendInterval: 0\n * },\n * agreements: {\n * showOnRegister: true,\n * showOnLogin: true\n * },\n * ui: {\n * variant: 'card'\n * },\n * session: {\n * maxAge: 0\n * }\n * })\n * void value\n * ```\n */\nexport type IamPublicConfig = z.infer<typeof IamPublicConfigSchema>\n/**\n * 一次性验证码登录请求。\n * @example\n * ```ts\n * import type { IamOtpLoginInput } from '@h-ai/api-contract'\n * import { IamOtpLoginInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamOtpLoginInput = IamOtpLoginInputSchema.parse({\n * identifier: 'alice',\n * code: 'example-1'\n * })\n * void value\n * ```\n */\nexport type IamOtpLoginInput = z.infer<typeof IamOtpLoginInputSchema>\n/**\n * 注销当前会话的请求。\n * @example\n * ```ts\n * import type { IamLogoutInput } from '@h-ai/api-contract'\n * import { IamLogoutInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamLogoutInput = IamLogoutInputSchema.parse({})\n * void value\n * ```\n */\nexport type IamLogoutInput = z.infer<typeof IamLogoutInputSchema>\n/**\n * 发送一次性验证码的请求。\n * @example\n * ```ts\n * import type { IamSendOtpInput } from '@h-ai/api-contract'\n * import { IamSendOtpInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamSendOtpInput = IamSendOtpInputSchema.parse({\n * identifier: 'alice'\n * })\n * void value\n * ```\n */\nexport type IamSendOtpInput = z.infer<typeof IamSendOtpInputSchema>\n/**\n * 以 HaiResult 区分成功业务数据和公共错误的 IamAuthResultOutput 响应。\n * @example\n * ```ts\n * import type { IamAuthResultOutput } from '@h-ai/api-contract'\n * import { IamAuthResultSchema } from '@h-ai/api-contract'\n * import { ok } from '@h-ai/core'\n *\n * const response: IamAuthResultOutput = ok(IamAuthResultSchema.parse({\n * user: {\n * id: 'example-1',\n * username: 'alice',\n * enabled: true,\n * createdAt: null,\n * updatedAt: null\n * },\n * tokens: {\n * accessToken: 'example-only-access',\n * expiresIn: 0,\n * tokenType: 'Bearer'\n * }\n * }))\n * if (response.success) void response.data\n * ```\n */\nexport type IamAuthResultOutput = HaiResult<z.infer<typeof IamAuthResultSchema>>\n/**\n * 当前登录用户及其有效权限。\n * @example\n * ```ts\n * import type { IamCurrentUser } from '@h-ai/api-contract'\n * import { IamCurrentUserSchema } from '@h-ai/api-contract'\n *\n * const value: IamCurrentUser = IamCurrentUserSchema.parse({\n * id: 'example-1',\n * username: 'alice',\n * enabled: true,\n * createdAt: null,\n * updatedAt: null,\n * roles: [\n * 'example'\n * ],\n * permissions: [\n * 'example'\n * ]\n * })\n * void value\n * ```\n */\nexport type IamCurrentUser = z.infer<typeof IamCurrentUserSchema>\n/**\n * 以 HaiResult 区分成功业务数据和公共错误的 IamCurrentUserOutput 响应。\n * @example\n * ```ts\n * import type { IamCurrentUserOutput } from '@h-ai/api-contract'\n * import { IamCurrentUserSchema } from '@h-ai/api-contract'\n * import { ok } from '@h-ai/core'\n *\n * const response: IamCurrentUserOutput = ok(IamCurrentUserSchema.parse({\n * id: 'example-1',\n * username: 'alice',\n * enabled: true,\n * createdAt: null,\n * updatedAt: null,\n * roles: [\n * 'example'\n * ],\n * permissions: [\n * 'example'\n * ]\n * }))\n * if (response.success) void response.data\n * ```\n */\nexport type IamCurrentUserOutput = HaiResult<IamCurrentUser>\n/**\n * 使用刷新凭据换取会话令牌的请求。\n * @example\n * ```ts\n * import type { IamRefreshTokenInput } from '@h-ai/api-contract'\n * import { IamRefreshTokenInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamRefreshTokenInput = IamRefreshTokenInputSchema.parse({\n * refreshToken: 'example-only-refresh'\n * })\n * void value\n * ```\n */\nexport type IamRefreshTokenInput = z.infer<typeof IamRefreshTokenInputSchema>\n/**\n * 以 HaiResult 区分成功业务数据和公共错误的 IamRefreshTokenOutput 响应。\n * @example\n * ```ts\n * import type { IamRefreshTokenOutput } from '@h-ai/api-contract'\n * import { IamRefreshTokenDataSchema } from '@h-ai/api-contract'\n * import { ok } from '@h-ai/core'\n *\n * const response: IamRefreshTokenOutput = ok(IamRefreshTokenDataSchema.parse({\n * tokens: {\n * accessToken: 'example-only-access',\n * expiresIn: 0,\n * tokenType: 'Bearer'\n * }\n * }))\n * if (response.success) void response.data\n * ```\n */\nexport type IamRefreshTokenOutput = HaiResult<z.infer<typeof IamRefreshTokenDataSchema>>\n/**\n * 用户注册请求。\n * @example\n * ```ts\n * import type { IamRegisterInput } from '@h-ai/api-contract'\n * import { IamRegisterInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamRegisterInput = IamRegisterInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamRegisterInput = z.infer<typeof IamRegisterInputSchema>\n/**\n * 当前用户修改密码的请求。\n * @example\n * ```ts\n * import type { IamChangePasswordInput } from '@h-ai/api-contract'\n * import { IamChangePasswordInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamChangePasswordInput = IamChangePasswordInputSchema.parse({\n * oldPassword: 'example',\n * newPassword: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamChangePasswordInput = z.infer<typeof IamChangePasswordInputSchema>\n/**\n * 修改当前用户资料的请求。\n * @example\n * ```ts\n * import type { IamUpdateCurrentUserInput } from '@h-ai/api-contract'\n * import { IamUpdateCurrentUserInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamUpdateCurrentUserInput = IamUpdateCurrentUserInputSchema.parse({})\n * void value\n * ```\n */\nexport type IamUpdateCurrentUserInput = z.infer<typeof IamUpdateCurrentUserInputSchema>\n/**\n * 管理员分页查询用户的请求。\n * @example\n * ```ts\n * import type { IamListUsersInput } from '@h-ai/api-contract'\n * import { IamListUsersInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamListUsersInput = IamListUsersInputSchema.parse({})\n * void value\n * ```\n */\nexport type IamListUsersInput = z.infer<typeof IamListUsersInputSchema>\n/**\n * 管理员创建用户的请求。\n * @example\n * ```ts\n * import type { IamAdminCreateUserInput } from '@h-ai/api-contract'\n * import { IamAdminCreateUserInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamAdminCreateUserInput = IamAdminCreateUserInputSchema.parse({\n * username: 'alice',\n * password: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamAdminCreateUserInput = z.infer<typeof IamAdminCreateUserInputSchema>\n/**\n * 管理员修改用户的请求。\n * @example\n * ```ts\n * import type { IamAdminUpdateUserInput } from '@h-ai/api-contract'\n * import { IamAdminUpdateUserInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamAdminUpdateUserInput = IamAdminUpdateUserInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport type IamAdminUpdateUserInput = z.infer<typeof IamAdminUpdateUserInputSchema>\n/**\n * 以用户 ID 定位目标的请求。\n * @example\n * ```ts\n * import type { IamUserIdInput } from '@h-ai/api-contract'\n * import { IamUserIdInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamUserIdInput = IamUserIdInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport type IamUserIdInput = z.infer<typeof IamUserIdInputSchema>\n/**\n * 管理员重置用户密码的请求。\n * @example\n * ```ts\n * import type { IamAdminResetPasswordInput } from '@h-ai/api-contract'\n * import { IamAdminResetPasswordInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamAdminResetPasswordInput = IamAdminResetPasswordInputSchema.parse({\n * id: 'example-1',\n * newPassword: 'example-only-password'\n * })\n * void value\n * ```\n */\nexport type IamAdminResetPasswordInput = z.infer<typeof IamAdminResetPasswordInputSchema>\n/**\n * 创建角色的请求。\n * @example\n * ```ts\n * import type { IamCreateRoleInput } from '@h-ai/api-contract'\n * import { IamCreateRoleInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamCreateRoleInput = IamCreateRoleInputSchema.parse({\n * code: 'example-1',\n * name: 'Example'\n * })\n * void value\n * ```\n */\nexport type IamCreateRoleInput = z.infer<typeof IamCreateRoleInputSchema>\n/**\n * 修改角色的请求。\n * @example\n * ```ts\n * import type { IamUpdateRoleInput } from '@h-ai/api-contract'\n * import { IamUpdateRoleInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamUpdateRoleInput = IamUpdateRoleInputSchema.parse({\n * id: 'example-1'\n * })\n * void value\n * ```\n */\nexport type IamUpdateRoleInput = z.infer<typeof IamUpdateRoleInputSchema>\n/**\n * 分页查询权限定义的请求。\n * @example\n * ```ts\n * import type { IamListPermissionsInput } from '@h-ai/api-contract'\n * import { IamListPermissionsInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamListPermissionsInput = IamListPermissionsInputSchema.parse({})\n * void value\n * ```\n */\nexport type IamListPermissionsInput = z.infer<typeof IamListPermissionsInputSchema>\n/**\n * 创建权限定义的请求。\n * @example\n * ```ts\n * import type { IamCreatePermissionInput } from '@h-ai/api-contract'\n * import { IamCreatePermissionInputSchema } from '@h-ai/api-contract'\n *\n * const value: IamCreatePermissionInput = IamCreatePermissionInputSchema.parse({\n * code: 'example-1',\n * name: 'Example'\n * })\n * void value\n * ```\n */\nexport type IamCreatePermissionInput = z.infer<typeof IamCreatePermissionInputSchema>\n","/**\n * @h-ai/api-contract — IAM 领域 contract\n *\n * 定义身份认证与权限管理相关 API 的接口边界:\n * - auth:登录、登出、OTP、刷新 Token、注册、修改密码\n * - users:Admin 管理用户(CRUD + 重置密码)\n * - roles:Admin 管理角色(CRUD)\n * - permissions:Admin 管理权限(CRUD)\n *\n * auth.* 入口址前缀为 `/auth`;users/roles/permissions 前缀为 `/iam`。\n * @module iam-contract\n */\n\nimport { paginatedSchema } from '../common/pagination-schemas.js'\nimport { haiResultSchema, HaiVoidResultSchema } from '../common/result-schemas.js'\nimport { route } from '../common/route.js'\nimport {\n IamAdminCreateUserInputSchema,\n IamAdminResetPasswordInputSchema,\n IamAdminUpdateUserInputSchema,\n IamAuthResultSchema,\n IamCaptchaChallengeSchema,\n IamChangePasswordInputSchema,\n IamConfirmPasswordResetInputSchema,\n IamCreateCaptchaInputSchema,\n IamCreatePermissionInputSchema,\n IamCreateRoleInputSchema,\n IamCurrentUserSchema,\n IamInviteUserInputSchema,\n IamLdapLoginInputSchema,\n IamListPermissionsInputSchema,\n IamListUsersInputSchema,\n IamLoginInputSchema,\n IamLogoutInputSchema,\n IamOtpLoginInputSchema,\n IamPermissionSchema,\n IamPublicConfigSchema,\n IamReauthenticateInputSchema,\n IamReauthenticationProofSchema,\n IamRefreshTokenDataSchema,\n IamRefreshTokenInputSchema,\n IamRegisterInputSchema,\n IamRenewPasswordInputSchema,\n IamRequestPasswordResetInputSchema,\n IamRoleSchema,\n IamSendOtpDataSchema,\n IamSendOtpInputSchema,\n IamUpdateCurrentUserInputSchema,\n IamUpdateRoleInputSchema,\n IamUserIdInputSchema,\n IamUserSchema,\n} from './iam-schemas.js'\n\n// 同一 contract 内被多个接口复用的输出结构保持私有,避免扩大公共 Schema 面。\nconst authResultOutputSchema = haiResultSchema(IamAuthResultSchema)\nconst userOutputSchema = haiResultSchema(IamUserSchema)\nconst roleOutputSchema = haiResultSchema(IamRoleSchema)\n\n/**\n * IAM 领域 oRPC contract。\n * @example\n * ```ts\n * import { apiContract } from '@h-ai/api-contract'\n *\n * const contract = apiContract.iam\n * void contract\n * ```\n */\nexport const iamContract = {\n auth: {\n createCaptcha: route({ method: 'POST', path: '/auth/captcha', operationId: 'iam.auth.createCaptcha', summary: 'Create self-hosted security challenge', tags: ['iam', 'auth'] })\n .input(IamCreateCaptchaInputSchema)\n .output(haiResultSchema(IamCaptchaChallengeSchema)),\n reauthenticate: route({ method: 'POST', path: '/auth/reauthenticate', operationId: 'iam.auth.reauthenticate', summary: 'Verify current password for one sensitive operation', tags: ['iam', 'auth'] })\n .input(IamReauthenticateInputSchema)\n .output(haiResultSchema(IamReauthenticationProofSchema)),\n publicConfig: route({ method: 'GET', path: '/auth/config', operationId: 'iam.auth.publicConfig', summary: 'Public authentication configuration', tags: ['iam', 'auth'] })\n .output(haiResultSchema(IamPublicConfigSchema.nullable())),\n renewPassword: route({ method: 'POST', path: '/auth/password/renew', operationId: 'iam.auth.renewPassword', summary: 'Change initial or expired password', tags: ['iam', 'auth'] })\n .input(IamRenewPasswordInputSchema)\n .output(HaiVoidResultSchema),\n loginWithLdap: route({ method: 'POST', path: '/auth/login/ldap', operationId: 'iam.auth.loginWithLdap', summary: 'LDAP login', tags: ['iam', 'auth'] })\n .input(IamLdapLoginInputSchema)\n .output(authResultOutputSchema),\n requestPasswordReset: route({ method: 'POST', path: '/auth/password-reset/request', operationId: 'iam.auth.requestPasswordReset', summary: 'Request password reset', tags: ['iam', 'auth'] })\n .input(IamRequestPasswordResetInputSchema)\n .output(HaiVoidResultSchema),\n confirmPasswordReset: route({ method: 'POST', path: '/auth/password-reset/confirm', operationId: 'iam.auth.confirmPasswordReset', summary: 'Confirm password reset', tags: ['iam', 'auth'] })\n .input(IamConfirmPasswordResetInputSchema)\n .output(HaiVoidResultSchema),\n login: route({ method: 'POST', path: '/auth/login', operationId: 'iam.auth.login', summary: 'Password login', tags: ['iam', 'auth'] })\n .input(IamLoginInputSchema)\n .output(authResultOutputSchema),\n loginWithOtp: route({ method: 'POST', path: '/auth/login/otp', operationId: 'iam.auth.loginWithOtp', summary: 'OTP login', tags: ['iam', 'auth'] })\n .input(IamOtpLoginInputSchema)\n .output(authResultOutputSchema),\n logout: route({ method: 'POST', path: '/auth/logout', operationId: 'iam.auth.logout', summary: 'Logout', tags: ['iam', 'auth'] })\n .input(IamLogoutInputSchema)\n .output(HaiVoidResultSchema),\n closeSession: route({ method: 'POST', path: '/auth/session/close', operationId: 'iam.auth.closeSession', summary: 'Revoke departing client session without clearing newer cookies', tags: ['iam', 'auth'] })\n .input(IamLogoutInputSchema)\n .output(HaiVoidResultSchema),\n currentUser: route({ method: 'GET', path: '/auth/me', operationId: 'iam.auth.currentUser', summary: 'Get current user and access scope', tags: ['iam', 'auth'] })\n .output(haiResultSchema(IamCurrentUserSchema)),\n refresh: route({ method: 'POST', path: '/auth/refresh', operationId: 'iam.auth.refresh', summary: 'Refresh access token', tags: ['iam', 'auth'] })\n .input(IamRefreshTokenInputSchema)\n .output(haiResultSchema(IamRefreshTokenDataSchema)),\n sendOtp: route({ method: 'POST', path: '/auth/otp/send', operationId: 'iam.auth.sendOtp', summary: 'Send OTP', tags: ['iam', 'auth'] })\n .input(IamSendOtpInputSchema)\n .output(haiResultSchema(IamSendOtpDataSchema)),\n register: route({ method: 'POST', path: '/auth/register', operationId: 'iam.auth.register', summary: 'Register and login', tags: ['iam', 'auth'] })\n .input(IamRegisterInputSchema)\n .output(authResultOutputSchema),\n changePassword: route({ method: 'POST', path: '/auth/change-password', operationId: 'iam.auth.changePassword', summary: 'Change current user password', tags: ['iam', 'auth'] })\n .input(IamChangePasswordInputSchema)\n .output(HaiVoidResultSchema),\n updateCurrentUser: route({ method: 'PUT', path: '/auth/me', operationId: 'iam.auth.updateCurrentUser', summary: 'Update current user', tags: ['iam', 'auth'] })\n .input(IamUpdateCurrentUserInputSchema)\n .output(userOutputSchema),\n },\n users: {\n invite: route({ method: 'POST', path: '/iam/users/invite', operationId: 'iam.users.invite', summary: 'Create account with one-time setup invitation', tags: ['iam', 'users'] })\n .input(IamInviteUserInputSchema)\n .output(userOutputSchema),\n list: route({ method: 'GET', path: '/iam/users', operationId: 'iam.users.list', summary: 'List users', tags: ['iam', 'users'] })\n .input(IamListUsersInputSchema)\n .output(haiResultSchema(paginatedSchema(IamUserSchema))),\n get: route({ method: 'GET', path: '/iam/users/{id}', operationId: 'iam.users.get', summary: 'Get user', tags: ['iam', 'users'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamUserSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/users', operationId: 'iam.users.create', summary: 'Create user', tags: ['iam', 'users'] })\n .input(IamAdminCreateUserInputSchema)\n .output(userOutputSchema),\n update: route({ method: 'PUT', path: '/iam/users/{id}', operationId: 'iam.users.update', summary: 'Update user', tags: ['iam', 'users'] })\n .input(IamAdminUpdateUserInputSchema)\n .output(userOutputSchema),\n delete: route({ method: 'DELETE', path: '/iam/users/{id}', operationId: 'iam.users.delete', summary: 'Delete user', tags: ['iam', 'users'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n resetPassword: route({ method: 'POST', path: '/iam/users/{id}/reset-password', operationId: 'iam.users.resetPassword', summary: 'Reset user password', tags: ['iam', 'users'] })\n .input(IamAdminResetPasswordInputSchema)\n .output(HaiVoidResultSchema),\n },\n roles: {\n list: route({ method: 'GET', path: '/iam/roles', operationId: 'iam.roles.list', summary: 'List roles', tags: ['iam', 'roles'] })\n .output(haiResultSchema(paginatedSchema(IamRoleSchema))),\n get: route({ method: 'GET', path: '/iam/roles/{id}', operationId: 'iam.roles.get', summary: 'Get role', tags: ['iam', 'roles'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamRoleSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/roles', operationId: 'iam.roles.create', summary: 'Create role', tags: ['iam', 'roles'] })\n .input(IamCreateRoleInputSchema)\n .output(roleOutputSchema),\n update: route({ method: 'PUT', path: '/iam/roles/{id}', operationId: 'iam.roles.update', summary: 'Update role', tags: ['iam', 'roles'] })\n .input(IamUpdateRoleInputSchema)\n .output(roleOutputSchema),\n delete: route({ method: 'DELETE', path: '/iam/roles/{id}', operationId: 'iam.roles.delete', summary: 'Delete role', tags: ['iam', 'roles'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n },\n permissions: {\n setSensitiveOperations: route({ method: 'PUT', path: '/iam/permissions/{id}/sensitive-operations', operationId: 'iam.permissions.sensitiveOperations', summary: 'Set permission sensitive operations', tags: ['iam', 'permissions'] })\n .input(IamPermissionSchema.pick({ id: true, sensitiveOperations: true }))\n .output(HaiVoidResultSchema),\n list: route({ method: 'GET', path: '/iam/permissions', operationId: 'iam.permissions.list', summary: 'List permissions', tags: ['iam', 'permissions'] })\n .input(IamListPermissionsInputSchema)\n .output(haiResultSchema(paginatedSchema(IamPermissionSchema))),\n get: route({ method: 'GET', path: '/iam/permissions/{id}', operationId: 'iam.permissions.get', summary: 'Get permission', tags: ['iam', 'permissions'] })\n .input(IamUserIdInputSchema)\n .output(haiResultSchema(IamPermissionSchema.nullable())),\n create: route({ method: 'POST', path: '/iam/permissions', operationId: 'iam.permissions.create', summary: 'Create permission', tags: ['iam', 'permissions'] })\n .input(IamCreatePermissionInputSchema)\n .output(haiResultSchema(IamPermissionSchema)),\n delete: route({ method: 'DELETE', path: '/iam/permissions/{id}', operationId: 'iam.permissions.delete', summary: 'Delete permission', tags: ['iam', 'permissions'] })\n .input(IamUserIdInputSchema)\n .output(HaiVoidResultSchema),\n },\n}\n\n/**\n * iam 领域公开 procedure 契约的完整类型。\n * @example\n * ```ts\n * import type { IamContract } from '@h-ai/api-contract'\n * import { apiContract } from '@h-ai/api-contract'\n *\n * const contract: IamContract = apiContract.iam\n * void contract\n * ```\n */\nexport type IamContract = typeof iamContract\n"]}
|