@h-ai/api-contract 0.1.0-alpha.42 → 0.1.0-alpha.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/iam/index.js CHANGED
@@ -1,4 +1,4 @@
1
- export { IAM_AUTH_ROUTES, IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultOutputSchema, IamAuthResultSchema, IamChangePasswordInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserOutputSchema, IamCurrentUserSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamNullablePermissionOutputSchema, IamNullableRoleOutputSchema, IamNullableUserOutputSchema, IamOtpLoginInputSchema, IamPermissionOutputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPermissionsPageOutputSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRefreshTokenOutputSchema, IamRegisterInputSchema, IamRoleOutputSchema, IamRoleSchema, IamRolesPageOutputSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamSendOtpOutputSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserOutputSchema, IamUserSchema, IamUsersPageOutputSchema, IamVoidOutputSchema, iamContract } from '../chunk-OUYWNVEX.js';
2
- import '../chunk-3GZQUVY3.js';
1
+ export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamChangePasswordInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema, iamContract } from '../chunk-MBNBQY2J.js';
2
+ import '../chunk-CUU2F6YD.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
package/dist/index.d.ts CHANGED
@@ -1,12 +1,13 @@
1
- export { AUDIO_WS_PATH, AiAssistantMessageSchema, AiChatCompletionChoiceSchema, AiChatCompletionData, AiChatCompletionDataSchema, AiChatCompletionInput, AiChatCompletionInputSchema, AiChatCompletionOutput, AiChatCompletionOutputSchema, AiChatHistoryDataSchema, AiChatHistoryInput, AiChatHistoryInputSchema, AiChatHistoryOutputSchema, AiChatMessageSchema, AiChatRecord, AiChatRecordSchema, AiContract, AiImageContentSchema, AiMemoryEntrySchema, AiMemoryListDataSchema, AiMemoryListInput, AiMemoryListInputSchema, AiMemoryListOutputSchema, AiMemoryRecallDataSchema, AiMemoryRecallInput, AiMemoryRecallInputSchema, AiMemoryRecallOutputSchema, AiMemoryTypeSchema, AiMessageContentSchema, AiMessageRoleSchema, AiSendMessageData, AiSendMessageDataSchema, AiSendMessageInput, AiSendMessageInputSchema, AiSendMessageOutput, AiSendMessageOutputSchema, AiSessionInfoSchema, AiSessionListDataSchema, AiSessionListInput, AiSessionListInputSchema, AiSessionListOutputSchema, AiTextContentSchema, AiTokenUsageSchema, AiToolCallSchema, AiToolDefinitionSchema, AiToolParameterSchema, AudioFormatSchema, AudioWsClientMessageSchema, AudioWsDoneMessageSchema, AudioWsStartMessageSchema, AudioWsTextMessageSchema } from './ai/index.js';
1
+ export { AUDIO_WS_PATH, AiAssistantMessageSchema, AiChatCompletionChoiceSchema, AiChatCompletionData, AiChatCompletionDataSchema, AiChatCompletionInput, AiChatCompletionInputSchema, AiChatCompletionOutput, AiChatHistoryDataSchema, AiChatHistoryInput, AiChatHistoryInputSchema, AiChatMessageSchema, AiChatRecord, AiChatRecordSchema, AiContract, AiImageContentSchema, AiMemoryEntrySchema, AiMemoryListDataSchema, AiMemoryListInput, AiMemoryListInputSchema, AiMemoryRecallDataSchema, AiMemoryRecallInput, AiMemoryRecallInputSchema, AiMemoryTypeSchema, AiMessageContentSchema, AiMessageRoleSchema, AiSendMessageData, AiSendMessageDataSchema, AiSendMessageInput, AiSendMessageInputSchema, AiSendMessageOutput, AiSessionInfoSchema, AiSessionListDataSchema, AiSessionListInput, AiSessionListInputSchema, AiTextContentSchema, AiTokenUsageSchema, AiToolCallSchema, AiToolDefinitionSchema, AiToolParameterSchema, AudioFormatSchema, AudioWsClientMessageSchema, AudioWsDoneMessageSchema, AudioWsStartMessageSchema, AudioWsTextMessageSchema } from './ai/index.js';
2
2
  import * as _orpc_contract from '@orpc/contract';
3
- import { AnyContractRouter } from '@orpc/contract';
3
+ import { AnyContractProcedure, AnyContractRouter } from '@orpc/contract';
4
4
  import * as zod_v4_core from 'zod/v4/core';
5
5
  import * as zod from 'zod';
6
6
  import { z } from 'zod';
7
- export { IAM_AUTH_ROUTES, IamAdminCreateUserInput, IamAdminCreateUserInputSchema, IamAdminResetPasswordInput, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInput, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultOutput, IamAuthResultOutputSchema, IamAuthResultSchema, IamChangePasswordInput, IamChangePasswordInputSchema, IamContract, IamCreatePermissionInput, IamCreatePermissionInputSchema, IamCreateRoleInput, IamCreateRoleInputSchema, IamCurrentUser, IamCurrentUserOutput, IamCurrentUserOutputSchema, IamCurrentUserSchema, IamListPermissionsInput, IamListPermissionsInputSchema, IamListUsersInput, IamListUsersInputSchema, IamLoginInput, IamLoginInputSchema, IamLogoutInput, IamLogoutInputSchema, IamNullablePermissionOutputSchema, IamNullableRoleOutputSchema, IamNullableUserOutputSchema, IamOtpLoginInput, IamOtpLoginInputSchema, IamPermissionOutputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPermissionsPageOutputSchema, IamRefreshTokenDataSchema, IamRefreshTokenInput, IamRefreshTokenInputSchema, IamRefreshTokenOutput, IamRefreshTokenOutputSchema, IamRegisterInput, IamRegisterInputSchema, IamRoleOutputSchema, IamRoleSchema, IamRolesPageOutputSchema, IamSendOtpDataSchema, IamSendOtpInput, IamSendOtpInputSchema, IamSendOtpOutputSchema, IamTokenPairSchema, IamUpdateCurrentUserInput, IamUpdateCurrentUserInputSchema, IamUpdateRoleInput, IamUpdateRoleInputSchema, IamUserIdInput, IamUserIdInputSchema, IamUserOutputSchema, IamUserSchema, IamUsersPageOutputSchema, IamVoidOutputSchema } from './iam/index.js';
8
- export { PaymentContract, PaymentCreateOrderDataSchema, PaymentCreateOrderInput, PaymentCreateOrderInputSchema, PaymentCreateOrderOutput, PaymentCreateOrderOutputSchema, PaymentNotifyMessageOutputSchema, PaymentNotifyMessageSchema, PaymentOrderSchema, PaymentProviderSchema, PaymentQueryOrderInputSchema, PaymentQueryOrderOutputSchema, PaymentRefundDataSchema, PaymentRefundInput, PaymentRefundInputSchema, PaymentRefundOutputSchema, PaymentStripeNotifyDataSchema, PaymentStripeNotifyOutputSchema, PaymentTradeTypeSchema } from './payment/index.js';
9
- export { StorageContract, StorageDeleteFilesInput, StorageDeleteFilesInputSchema, StorageFileKeyInput, StorageFileKeyInputSchema, StorageFileMetadataOutputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, StorageListFilesInput, StorageListFilesInputSchema, StorageListFilesOutputSchema, StoragePresignDownloadInput, StoragePresignDownloadInputSchema, StoragePresignUploadInput, StoragePresignUploadInputSchema, StoragePresignedUrlOutput, StoragePresignedUrlOutputSchema, StoragePresignedUrlSchema, StorageVoidOutputSchema } from './storage/index.js';
7
+ export { IamAdminCreateUserInput, IamAdminCreateUserInputSchema, IamAdminResetPasswordInput, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInput, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultOutput, IamAuthResultSchema, IamChangePasswordInput, IamChangePasswordInputSchema, IamContract, IamCreatePermissionInput, IamCreatePermissionInputSchema, IamCreateRoleInput, IamCreateRoleInputSchema, IamCurrentUser, IamCurrentUserOutput, IamCurrentUserSchema, IamListPermissionsInput, IamListPermissionsInputSchema, IamListUsersInput, IamListUsersInputSchema, IamLoginInput, IamLoginInputSchema, IamLogoutInput, IamLogoutInputSchema, IamOtpLoginInput, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamRefreshTokenDataSchema, IamRefreshTokenInput, IamRefreshTokenInputSchema, IamRefreshTokenOutput, IamRegisterInput, IamRegisterInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInput, IamSendOtpInputSchema, IamTokenPairSchema, IamUpdateCurrentUserInput, IamUpdateCurrentUserInputSchema, IamUpdateRoleInput, IamUpdateRoleInputSchema, IamUserIdInput, IamUserIdInputSchema, IamUserSchema } from './iam/index.js';
8
+ export { PaymentContract, PaymentCreateOrderDataSchema, PaymentCreateOrderInput, PaymentCreateOrderInputSchema, PaymentCreateOrderOutput, PaymentNotifyMessageSchema, PaymentOrderSchema, PaymentProviderSchema, PaymentQueryOrderInputSchema, PaymentRefundDataSchema, PaymentRefundInput, PaymentRefundInputSchema, PaymentStripeNotifyDataSchema, PaymentTradeTypeSchema } from './payment/index.js';
9
+ export { StorageContract, StorageDeleteFilesInput, StorageDeleteFilesInputSchema, StorageFileKeyInput, StorageFileKeyInputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, StorageListFilesInput, StorageListFilesInputSchema, StoragePresignDownloadInput, StoragePresignDownloadInputSchema, StoragePresignUploadInput, StoragePresignUploadInputSchema, StoragePresignedUrlOutput, StoragePresignedUrlSchema } from './storage/index.js';
10
+ import '@h-ai/core';
10
11
 
11
12
  /**
12
13
  * @h-ai/api-contract — 分页 Schema
@@ -44,9 +45,8 @@ declare const PaginationQuerySchema: z.ZodObject<{
44
45
  *
45
46
  * @example
46
47
  * ```ts
47
- * const IamUsersPageOutputSchema = haiResultSchema(
48
- * paginatedSchema(IamUserSchema)
49
- * )
48
+ * const listUsers = route({ method: 'GET', path: '/users' })
49
+ * .output(haiResultSchema(paginatedSchema(IamUserSchema)))
50
50
  * // 解析结果形如:
51
51
  * // { success: true, data: { items: [...], total: 100, page: 1, pageSize: 20 } }
52
52
  * ```
@@ -109,6 +109,24 @@ declare function haiResultSchema<T extends z.ZodType>(dataSchema: T): z.ZodDiscr
109
109
  }, z.core.$strip>;
110
110
  }, z.core.$strip>], "success">;
111
111
 
112
+ /**
113
+ * @h-ai/api-contract — route builder
114
+ *
115
+ * 统一封装 oRPC 的 route builder。应用与契约包通过 `apiContract.route(...)`
116
+ * 定义 HTTP 路由元数据,不需要直接依赖 `@orpc/contract` 或 `@h-ai/serv`。
117
+ */
118
+
119
+ /**
120
+ * 读取 contract procedure 中声明的业务路径。
121
+ *
122
+ * 路径只在对应 `*-contract.ts` 的 route 定义中维护;transport、client 与
123
+ * middleware 通过本函数读取,避免再维护一份路由常量。
124
+ *
125
+ * @param procedure - 已声明 HTTP route 的 oRPC contract procedure
126
+ * @returns contract 中的绝对业务路径
127
+ */
128
+ declare function pathOf(procedure: AnyContractProcedure): `/${string}`;
129
+
112
130
  /**
113
131
  * @h-ai/api-contract — Contract 组合工具
114
132
  *
@@ -172,6 +190,8 @@ declare const apiContract: {
172
190
  paginatedSchema: typeof paginatedSchema;
173
191
  /** 创建 oRPC contract 路由节点,供自定义 contract 定义 HTTP 元数据。 */
174
192
  route: (route: _orpc_contract.Route) => _orpc_contract.ContractProcedureBuilder<_orpc_contract.Schema<unknown, unknown>, _orpc_contract.Schema<unknown, unknown>, Record<never, never>, Record<never, never>>;
193
+ /** 从 contract procedure 读取其唯一业务路径。 */
194
+ pathOf: typeof pathOf;
175
195
  /** IAM 领域 contract(认证 / 用户 / 角色 / 权限)。 */
176
196
  iam: {
177
197
  auth: {
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
- import { iamContract, paginatedSchema } from './chunk-OUYWNVEX.js';
2
- export { IAM_AUTH_ROUTES, IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultOutputSchema, IamAuthResultSchema, IamChangePasswordInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserOutputSchema, IamCurrentUserSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamNullablePermissionOutputSchema, IamNullableRoleOutputSchema, IamNullableUserOutputSchema, IamOtpLoginInputSchema, IamPermissionOutputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamPermissionsPageOutputSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRefreshTokenOutputSchema, IamRegisterInputSchema, IamRoleOutputSchema, IamRoleSchema, IamRolesPageOutputSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamSendOtpOutputSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserOutputSchema, IamUserSchema, IamUsersPageOutputSchema, IamVoidOutputSchema, PaginationQuerySchema, paginatedSchema } from './chunk-OUYWNVEX.js';
3
- import { storageContract } from './chunk-DKBPLQMI.js';
4
- export { StorageDeleteFilesInputSchema, StorageFileKeyInputSchema, StorageFileMetadataOutputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, StorageListFilesInputSchema, StorageListFilesOutputSchema, StoragePresignDownloadInputSchema, StoragePresignUploadInputSchema, StoragePresignedUrlOutputSchema, StoragePresignedUrlSchema, StorageVoidOutputSchema } from './chunk-DKBPLQMI.js';
5
- import { aiContract } from './chunk-EZVXYX3T.js';
6
- export { AUDIO_WS_PATH, AiAssistantMessageSchema, AiChatCompletionChoiceSchema, AiChatCompletionDataSchema, AiChatCompletionInputSchema, AiChatCompletionOutputSchema, AiChatHistoryDataSchema, AiChatHistoryInputSchema, AiChatHistoryOutputSchema, AiChatMessageSchema, AiChatRecordSchema, AiImageContentSchema, AiMemoryEntrySchema, AiMemoryListDataSchema, AiMemoryListInputSchema, AiMemoryListOutputSchema, AiMemoryRecallDataSchema, AiMemoryRecallInputSchema, AiMemoryRecallOutputSchema, AiMemoryTypeSchema, AiMessageContentSchema, AiMessageRoleSchema, AiSendMessageDataSchema, AiSendMessageInputSchema, AiSendMessageOutputSchema, AiSessionInfoSchema, AiSessionListDataSchema, AiSessionListInputSchema, AiSessionListOutputSchema, AiTextContentSchema, AiTokenUsageSchema, AiToolCallSchema, AiToolDefinitionSchema, AiToolParameterSchema, AudioFormatSchema, AudioWsClientMessageSchema, AudioWsDoneMessageSchema, AudioWsStartMessageSchema, AudioWsTextMessageSchema } from './chunk-EZVXYX3T.js';
7
- import { paymentContract } from './chunk-HJMSMLTZ.js';
8
- export { PaymentCreateOrderDataSchema, PaymentCreateOrderInputSchema, PaymentCreateOrderOutputSchema, PaymentNotifyMessageOutputSchema, PaymentNotifyMessageSchema, PaymentOrderSchema, PaymentProviderSchema, PaymentQueryOrderInputSchema, PaymentQueryOrderOutputSchema, PaymentRefundDataSchema, PaymentRefundInputSchema, PaymentRefundOutputSchema, PaymentStripeNotifyDataSchema, PaymentStripeNotifyOutputSchema, PaymentTradeTypeSchema } from './chunk-HJMSMLTZ.js';
9
- import { route, HaiVoidResultSchema, haiResultSchema } from './chunk-3GZQUVY3.js';
10
- export { HaiErrorSchema } from './chunk-3GZQUVY3.js';
1
+ import { iamContract, paginatedSchema } from './chunk-MBNBQY2J.js';
2
+ export { IamAdminCreateUserInputSchema, IamAdminResetPasswordInputSchema, IamAdminUpdateUserInputSchema, IamAgreementDisplaySchema, IamAuthResultSchema, IamChangePasswordInputSchema, IamCreatePermissionInputSchema, IamCreateRoleInputSchema, IamCurrentUserSchema, IamListPermissionsInputSchema, IamListUsersInputSchema, IamLoginInputSchema, IamLogoutInputSchema, IamOtpLoginInputSchema, IamPermissionSchema, IamPermissionTypeSchema, IamRefreshTokenDataSchema, IamRefreshTokenInputSchema, IamRegisterInputSchema, IamRoleSchema, IamSendOtpDataSchema, IamSendOtpInputSchema, IamTokenPairSchema, IamUpdateCurrentUserInputSchema, IamUpdateRoleInputSchema, IamUserIdInputSchema, IamUserSchema, PaginationQuerySchema, paginatedSchema } from './chunk-MBNBQY2J.js';
3
+ import { storageContract } from './chunk-3QSKWVLP.js';
4
+ export { StorageDeleteFilesInputSchema, StorageFileKeyInputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, StorageListFilesInputSchema, StoragePresignDownloadInputSchema, StoragePresignUploadInputSchema, StoragePresignedUrlSchema } from './chunk-3QSKWVLP.js';
5
+ import { aiContract } from './chunk-VSPYX4DD.js';
6
+ export { AUDIO_WS_PATH, AiAssistantMessageSchema, AiChatCompletionChoiceSchema, AiChatCompletionDataSchema, AiChatCompletionInputSchema, AiChatHistoryDataSchema, AiChatHistoryInputSchema, AiChatMessageSchema, AiChatRecordSchema, AiImageContentSchema, AiMemoryEntrySchema, AiMemoryListDataSchema, AiMemoryListInputSchema, AiMemoryRecallDataSchema, AiMemoryRecallInputSchema, AiMemoryTypeSchema, AiMessageContentSchema, AiMessageRoleSchema, AiSendMessageDataSchema, AiSendMessageInputSchema, AiSessionInfoSchema, AiSessionListDataSchema, AiSessionListInputSchema, AiTextContentSchema, AiTokenUsageSchema, AiToolCallSchema, AiToolDefinitionSchema, AiToolParameterSchema, AudioFormatSchema, AudioWsClientMessageSchema, AudioWsDoneMessageSchema, AudioWsStartMessageSchema, AudioWsTextMessageSchema } from './chunk-VSPYX4DD.js';
7
+ import { paymentContract } from './chunk-JIQINMLG.js';
8
+ export { PaymentCreateOrderDataSchema, PaymentCreateOrderInputSchema, PaymentNotifyMessageSchema, PaymentOrderSchema, PaymentProviderSchema, PaymentQueryOrderInputSchema, PaymentRefundDataSchema, PaymentRefundInputSchema, PaymentStripeNotifyDataSchema, PaymentTradeTypeSchema } from './chunk-JIQINMLG.js';
9
+ import { pathOf, route, HaiVoidResultSchema, haiResultSchema } from './chunk-CUU2F6YD.js';
10
+ export { HaiErrorSchema } from './chunk-CUU2F6YD.js';
11
11
  import { z } from 'zod';
12
12
 
13
13
  // src/composition/create-api-contract.ts
@@ -33,6 +33,8 @@ var apiContract = {
33
33
  paginatedSchema,
34
34
  /** 创建 oRPC contract 路由节点,供自定义 contract 定义 HTTP 元数据。 */
35
35
  route,
36
+ /** 从 contract procedure 读取其唯一业务路径。 */
37
+ pathOf,
36
38
  // 领域 contract(框架内置)
37
39
  /** IAM 领域 contract(认证 / 用户 / 角色 / 权限)。 */
38
40
  iam: iamContract,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/composition/create-api-contract.ts","../src/api-contract-main.ts","../src/common/response-schemas.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAsCO,SAAS,kBAA4D,OAAA,EAAmC;AAC7G,EAAA,MAAM,WAA8C,EAAC;AAErD,EAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,cAAc,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC9D,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,QAAA,CAAS,MAAM,CAAA,GAAI,cAAA;AAAA,IACrB;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT;;;ACjBO,IAAM,WAAA,GAAc;AAAA;AAAA,EAEzB,MAAA,EAAQ,iBAAA;AAAA;AAAA,EAGR,eAAA;AAAA;AAAA,EAEA,gBAAA,EAAkB,mBAAA;AAAA;AAAA,EAElB,eAAA;AAAA;AAAA,EAEA,KAAA;AAAA;AAAA;AAAA,EAIA,GAAA,EAAK,WAAA;AAAA;AAAA,EAEL,OAAA,EAAS,eAAA;AAAA;AAAA,EAET,EAAA,EAAI,UAAA;AAAA;AAAA,EAEJ,OAAA,EAAS;AACX;AC3CO,IAAM,aAAA,GAAgB,EAAE,MAAA,CAAO;AAAA,EACpC,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AACtB,CAAC","file":"index.js","sourcesContent":["/**\n * @h-ai/api-contract — Contract 组合工具\n *\n * 提供将多个领域 contract 组合为应用级 contract 的工厂函数。\n * 仅描述接口边界,不包含任何 procedure 实现。\n * @module create-api-contract\n */\n\nimport type { AnyContractRouter } from '@orpc/contract'\n\n/** API contract 组合输入。key 为领域名称,value 为领域 contract 或 false/undefined(跳过该领域)。 */\nexport type CreateApiContractOptions = Record<string, AnyContractRouter | false | undefined>\n\n/** 根据输入过滤 false/undefined 后得到的应用级 contract 类型。 */\nexport type CreatedApiContract<T extends CreateApiContractOptions> = {\n readonly [K in keyof T as T[K] extends false | undefined ? never : K]: Exclude<T[K], false | undefined>\n}\n\n/**\n * 按领域组合应用级 API contract。\n *\n * contract 只描述接口边界;具体的 procedure 实现由 `@h-ai/serv` 的 feature 模块或应用层提供。\n * 传入 `false` 或 `undefined` 的领域将从最终 contract 中移除,类型也会同步收窄。\n *\n * @param options - 各领域 contract(传 false/undefined 表示禁用该领域)\n * @returns 过滤后的应用级 oRPC contract router\n *\n * @example\n * ```ts\n * import { apiContract } from '@h-ai/api-contract'\n *\n * const myContract = apiContract.create({\n * iam: apiContract.iam,\n * storage: apiContract.storage,\n * payment: false, // 未启用,不会出现在 contract 或 OpenAPI spec 中\n * })\n * ```\n */\nexport function createApiContract<const T extends CreateApiContractOptions>(options: T): CreatedApiContract<T> {\n const contract: Record<string, AnyContractRouter> = {}\n\n for (const [domain, domainContract] of Object.entries(options)) {\n if (domainContract) {\n contract[domain] = domainContract\n }\n }\n\n return contract as CreatedApiContract<T>\n}\n","/**\n * @h-ai/api-contract — 统一命名空间入口\n *\n * 将 contract 组合工厂、HaiResult schema 工具与各领域 contract 集中暴露在\n * `apiContract.*` 之下。应用层只需 `import { apiContract } from '@h-ai/api-contract'`\n * 即可完成所有 contract 装配,无需感知子模块路径或 `@orpc/contract` 实现细节。\n *\n * @module api-contract-main\n *\n * @example\n * ```ts\n * import { apiContract } from '@h-ai/api-contract'\n *\n * const contract = apiContract.create({\n * iam: apiContract.iam,\n * storage: apiContract.storage,\n * ai: apiContract.ai,\n * })\n * ```\n */\n\nimport { aiContract } from './ai/ai-contract.js'\nimport { paginatedSchema } from './common/pagination-schemas.js'\nimport { haiResultSchema, HaiVoidResultSchema } from './common/result-schemas.js'\nimport { route } from './common/route.js'\nimport { createApiContract } from './composition/create-api-contract.js'\nimport { iamContract } from './iam/iam-contract.js'\nimport { paymentContract } from './payment/payment-contract.js'\nimport { storageContract } from './storage/storage-contract.js'\n\n/** hai-framework API contract 统一入口(扁平命名空间)。 */\nexport const apiContract = {\n /** 组合任意领域 contract,过滤掉 `false` / `undefined`,输出可被 serv 挂载的 router。 */\n create: createApiContract,\n\n /** 把 data schema 包成 `HaiResult<T>` 区分联合,供 procedure `.output(...)` 使用。 */\n haiResultSchema,\n /** `HaiResult<void>` 常量 schema。 */\n voidResultSchema: HaiVoidResultSchema,\n /** 分页响应 schema 工厂。 */\n paginatedSchema,\n /** 创建 oRPC contract 路由节点,供自定义 contract 定义 HTTP 元数据。 */\n route,\n\n // 领域 contract(框架内置)\n /** IAM 领域 contract(认证 / 用户 / 角色 / 权限)。 */\n iam: iamContract,\n /** Storage 领域 contract(预签名 URL / 文件管理)。 */\n storage: storageContract,\n /** AI 领域 contract(聊天 / 记忆 / 会话)。 */\n ai: aiContract,\n /** Payment 领域 contract。 */\n payment: paymentContract,\n}\n","/**\n * @h-ai/api-contract — 通用响应 Schema\n *\n * 跨领域共用的基础请求 / 响应结构,如 ID 路径参数。\n * @module response-schemas\n */\n\nimport { z } from 'zod'\n\n/** 通用 ID 路径参数 Schema。用于 `GET /resource/{id}` 等 RESTful 路由的输入校验。 */\nexport const IdParamSchema = z.object({\n id: z.string().min(1),\n})\n"]}
1
+ {"version":3,"sources":["../src/composition/create-api-contract.ts","../src/api-contract-main.ts","../src/common/response-schemas.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAsCO,SAAS,kBAA4D,OAAA,EAAmC;AAC7G,EAAA,MAAM,WAA8C,EAAC;AAErD,EAAA,KAAA,MAAW,CAAC,MAAA,EAAQ,cAAc,KAAK,MAAA,CAAO,OAAA,CAAQ,OAAO,CAAA,EAAG;AAC9D,IAAA,IAAI,cAAA,EAAgB;AAClB,MAAA,QAAA,CAAS,MAAM,CAAA,GAAI,cAAA;AAAA,IACrB;AAAA,EACF;AAEA,EAAA,OAAO,QAAA;AACT;;;ACjBO,IAAM,WAAA,GAAc;AAAA;AAAA,EAEzB,MAAA,EAAQ,iBAAA;AAAA;AAAA,EAGR,eAAA;AAAA;AAAA,EAEA,gBAAA,EAAkB,mBAAA;AAAA;AAAA,EAElB,eAAA;AAAA;AAAA,EAEA,KAAA;AAAA;AAAA,EAEA,MAAA;AAAA;AAAA;AAAA,EAIA,GAAA,EAAK,WAAA;AAAA;AAAA,EAEL,OAAA,EAAS,eAAA;AAAA;AAAA,EAET,EAAA,EAAI,UAAA;AAAA;AAAA,EAEJ,OAAA,EAAS;AACX;AC7CO,IAAM,aAAA,GAAgB,EAAE,MAAA,CAAO;AAAA,EACpC,EAAA,EAAI,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AACtB,CAAC","file":"index.js","sourcesContent":["/**\n * @h-ai/api-contract — Contract 组合工具\n *\n * 提供将多个领域 contract 组合为应用级 contract 的工厂函数。\n * 仅描述接口边界,不包含任何 procedure 实现。\n * @module create-api-contract\n */\n\nimport type { AnyContractRouter } from '@orpc/contract'\n\n/** API contract 组合输入。key 为领域名称,value 为领域 contract 或 false/undefined(跳过该领域)。 */\nexport type CreateApiContractOptions = Record<string, AnyContractRouter | false | undefined>\n\n/** 根据输入过滤 false/undefined 后得到的应用级 contract 类型。 */\nexport type CreatedApiContract<T extends CreateApiContractOptions> = {\n readonly [K in keyof T as T[K] extends false | undefined ? never : K]: Exclude<T[K], false | undefined>\n}\n\n/**\n * 按领域组合应用级 API contract。\n *\n * contract 只描述接口边界;具体的 procedure 实现由 `@h-ai/serv` 的 feature 模块或应用层提供。\n * 传入 `false` 或 `undefined` 的领域将从最终 contract 中移除,类型也会同步收窄。\n *\n * @param options - 各领域 contract(传 false/undefined 表示禁用该领域)\n * @returns 过滤后的应用级 oRPC contract router\n *\n * @example\n * ```ts\n * import { apiContract } from '@h-ai/api-contract'\n *\n * const myContract = apiContract.create({\n * iam: apiContract.iam,\n * storage: apiContract.storage,\n * payment: false, // 未启用,不会出现在 contract 或 OpenAPI spec 中\n * })\n * ```\n */\nexport function createApiContract<const T extends CreateApiContractOptions>(options: T): CreatedApiContract<T> {\n const contract: Record<string, AnyContractRouter> = {}\n\n for (const [domain, domainContract] of Object.entries(options)) {\n if (domainContract) {\n contract[domain] = domainContract\n }\n }\n\n return contract as CreatedApiContract<T>\n}\n","/**\n * @h-ai/api-contract — 统一命名空间入口\n *\n * 将 contract 组合工厂、HaiResult schema 工具与各领域 contract 集中暴露在\n * `apiContract.*` 之下。应用层只需 `import { apiContract } from '@h-ai/api-contract'`\n * 即可完成所有 contract 装配,无需感知子模块路径或 `@orpc/contract` 实现细节。\n *\n * @module api-contract-main\n *\n * @example\n * ```ts\n * import { apiContract } from '@h-ai/api-contract'\n *\n * const contract = apiContract.create({\n * iam: apiContract.iam,\n * storage: apiContract.storage,\n * ai: apiContract.ai,\n * })\n * ```\n */\n\nimport { aiContract } from './ai/ai-contract.js'\nimport { paginatedSchema } from './common/pagination-schemas.js'\nimport { haiResultSchema, HaiVoidResultSchema } from './common/result-schemas.js'\nimport { pathOf, route } from './common/route.js'\nimport { createApiContract } from './composition/create-api-contract.js'\nimport { iamContract } from './iam/iam-contract.js'\nimport { paymentContract } from './payment/payment-contract.js'\nimport { storageContract } from './storage/storage-contract.js'\n\n/** hai-framework API contract 统一入口(扁平命名空间)。 */\nexport const apiContract = {\n /** 组合任意领域 contract,过滤掉 `false` / `undefined`,输出可被 serv 挂载的 router。 */\n create: createApiContract,\n\n /** 把 data schema 包成 `HaiResult<T>` 区分联合,供 procedure `.output(...)` 使用。 */\n haiResultSchema,\n /** `HaiResult<void>` 常量 schema。 */\n voidResultSchema: HaiVoidResultSchema,\n /** 分页响应 schema 工厂。 */\n paginatedSchema,\n /** 创建 oRPC contract 路由节点,供自定义 contract 定义 HTTP 元数据。 */\n route,\n /** 从 contract procedure 读取其唯一业务路径。 */\n pathOf,\n\n // 领域 contract(框架内置)\n /** IAM 领域 contract(认证 / 用户 / 角色 / 权限)。 */\n iam: iamContract,\n /** Storage 领域 contract(预签名 URL / 文件管理)。 */\n storage: storageContract,\n /** AI 领域 contract(聊天 / 记忆 / 会话)。 */\n ai: aiContract,\n /** Payment 领域 contract。 */\n payment: paymentContract,\n}\n","/**\n * @h-ai/api-contract — 通用响应 Schema\n *\n * 跨领域共用的基础请求 / 响应结构,如 ID 路径参数。\n * @module response-schemas\n */\n\nimport { z } from 'zod'\n\n/** 通用 ID 路径参数 Schema。用于 `GET /resource/{id}` 等 RESTful 路由的输入校验。 */\nexport const IdParamSchema = z.object({\n id: z.string().min(1),\n})\n"]}
@@ -1,5 +1,6 @@
1
1
  import * as _orpc_contract from '@orpc/contract';
2
2
  import { z } from 'zod';
3
+ import { HaiResult } from '@h-ai/core';
3
4
 
4
5
  /** Payment 领域 oRPC contract。 */
5
6
  declare const paymentContract: {
@@ -277,128 +278,8 @@ declare const PaymentNotifyMessageSchema: z.ZodObject<{
277
278
  declare const PaymentStripeNotifyDataSchema: z.ZodObject<{
278
279
  received: z.ZodBoolean;
279
280
  }, z.core.$strip>;
280
- declare const PaymentCreateOrderOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
281
- success: z.ZodLiteral<true>;
282
- data: z.ZodObject<{
283
- provider: z.ZodEnum<{
284
- wechat: "wechat";
285
- alipay: "alipay";
286
- stripe: "stripe";
287
- }>;
288
- tradeType: z.ZodEnum<{
289
- jsapi: "jsapi";
290
- h5: "h5";
291
- app: "app";
292
- native: "native";
293
- mini_program: "mini_program";
294
- }>;
295
- clientParams: z.ZodRecord<z.ZodString, z.ZodUnknown>;
296
- prepayId: z.ZodOptional<z.ZodString>;
297
- }, z.core.$strip>;
298
- }, z.core.$strip>, z.ZodObject<{
299
- success: z.ZodLiteral<false>;
300
- error: z.ZodObject<{
301
- code: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
302
- message: z.ZodString;
303
- httpStatus: z.ZodOptional<z.ZodNumber>;
304
- system: z.ZodOptional<z.ZodString>;
305
- module: z.ZodOptional<z.ZodString>;
306
- cause: z.ZodOptional<z.ZodUnknown>;
307
- suggestion: z.ZodOptional<z.ZodString>;
308
- ext: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
309
- }, z.core.$strip>;
310
- }, z.core.$strip>], "success">;
311
- declare const PaymentQueryOrderOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
312
- success: z.ZodLiteral<true>;
313
- data: z.ZodObject<{
314
- orderNo: z.ZodString;
315
- transactionId: z.ZodOptional<z.ZodString>;
316
- status: z.ZodEnum<{
317
- pending: "pending";
318
- paid: "paid";
319
- closed: "closed";
320
- refunded: "refunded";
321
- failed: "failed";
322
- }>;
323
- amount: z.ZodNumber;
324
- paidAt: z.ZodOptional<z.ZodISODateTime>;
325
- }, z.core.$strip>;
326
- }, z.core.$strip>, z.ZodObject<{
327
- success: z.ZodLiteral<false>;
328
- error: z.ZodObject<{
329
- code: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
330
- message: z.ZodString;
331
- httpStatus: z.ZodOptional<z.ZodNumber>;
332
- system: z.ZodOptional<z.ZodString>;
333
- module: z.ZodOptional<z.ZodString>;
334
- cause: z.ZodOptional<z.ZodUnknown>;
335
- suggestion: z.ZodOptional<z.ZodString>;
336
- ext: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
337
- }, z.core.$strip>;
338
- }, z.core.$strip>], "success">;
339
- declare const PaymentRefundOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
340
- success: z.ZodLiteral<true>;
341
- data: z.ZodObject<{
342
- refundNo: z.ZodString;
343
- refundId: z.ZodString;
344
- status: z.ZodEnum<{
345
- success: "success";
346
- failed: "failed";
347
- processing: "processing";
348
- }>;
349
- }, z.core.$strip>;
350
- }, z.core.$strip>, z.ZodObject<{
351
- success: z.ZodLiteral<false>;
352
- error: z.ZodObject<{
353
- code: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
354
- message: z.ZodString;
355
- httpStatus: z.ZodOptional<z.ZodNumber>;
356
- system: z.ZodOptional<z.ZodString>;
357
- module: z.ZodOptional<z.ZodString>;
358
- cause: z.ZodOptional<z.ZodUnknown>;
359
- suggestion: z.ZodOptional<z.ZodString>;
360
- ext: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
361
- }, z.core.$strip>;
362
- }, z.core.$strip>], "success">;
363
- declare const PaymentNotifyMessageOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
364
- success: z.ZodLiteral<true>;
365
- data: z.ZodObject<{
366
- code: z.ZodString;
367
- message: z.ZodString;
368
- }, z.core.$strip>;
369
- }, z.core.$strip>, z.ZodObject<{
370
- success: z.ZodLiteral<false>;
371
- error: z.ZodObject<{
372
- code: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
373
- message: z.ZodString;
374
- httpStatus: z.ZodOptional<z.ZodNumber>;
375
- system: z.ZodOptional<z.ZodString>;
376
- module: z.ZodOptional<z.ZodString>;
377
- cause: z.ZodOptional<z.ZodUnknown>;
378
- suggestion: z.ZodOptional<z.ZodString>;
379
- ext: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
380
- }, z.core.$strip>;
381
- }, z.core.$strip>], "success">;
382
- declare const PaymentStripeNotifyOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
383
- success: z.ZodLiteral<true>;
384
- data: z.ZodObject<{
385
- received: z.ZodBoolean;
386
- }, z.core.$strip>;
387
- }, z.core.$strip>, z.ZodObject<{
388
- success: z.ZodLiteral<false>;
389
- error: z.ZodObject<{
390
- code: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
391
- message: z.ZodString;
392
- httpStatus: z.ZodOptional<z.ZodNumber>;
393
- system: z.ZodOptional<z.ZodString>;
394
- module: z.ZodOptional<z.ZodString>;
395
- cause: z.ZodOptional<z.ZodUnknown>;
396
- suggestion: z.ZodOptional<z.ZodString>;
397
- ext: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
398
- }, z.core.$strip>;
399
- }, z.core.$strip>], "success">;
400
281
  type PaymentCreateOrderInput = z.infer<typeof PaymentCreateOrderInputSchema>;
401
- type PaymentCreateOrderOutput = z.infer<typeof PaymentCreateOrderOutputSchema>;
282
+ type PaymentCreateOrderOutput = HaiResult<z.infer<typeof PaymentCreateOrderDataSchema>>;
402
283
  type PaymentRefundInput = z.infer<typeof PaymentRefundInputSchema>;
403
284
 
404
- export { type PaymentContract, PaymentCreateOrderDataSchema, type PaymentCreateOrderInput, PaymentCreateOrderInputSchema, type PaymentCreateOrderOutput, PaymentCreateOrderOutputSchema, PaymentNotifyMessageOutputSchema, PaymentNotifyMessageSchema, PaymentOrderSchema, PaymentProviderSchema, PaymentQueryOrderInputSchema, PaymentQueryOrderOutputSchema, PaymentRefundDataSchema, type PaymentRefundInput, PaymentRefundInputSchema, PaymentRefundOutputSchema, PaymentStripeNotifyDataSchema, PaymentStripeNotifyOutputSchema, PaymentTradeTypeSchema, paymentContract };
285
+ export { type PaymentContract, PaymentCreateOrderDataSchema, type PaymentCreateOrderInput, PaymentCreateOrderInputSchema, type PaymentCreateOrderOutput, PaymentNotifyMessageSchema, PaymentOrderSchema, PaymentProviderSchema, PaymentQueryOrderInputSchema, PaymentRefundDataSchema, type PaymentRefundInput, PaymentRefundInputSchema, PaymentStripeNotifyDataSchema, PaymentTradeTypeSchema, paymentContract };
@@ -1,4 +1,4 @@
1
- export { PaymentCreateOrderDataSchema, PaymentCreateOrderInputSchema, PaymentCreateOrderOutputSchema, PaymentNotifyMessageOutputSchema, PaymentNotifyMessageSchema, PaymentOrderSchema, PaymentProviderSchema, PaymentQueryOrderInputSchema, PaymentQueryOrderOutputSchema, PaymentRefundDataSchema, PaymentRefundInputSchema, PaymentRefundOutputSchema, PaymentStripeNotifyDataSchema, PaymentStripeNotifyOutputSchema, PaymentTradeTypeSchema, paymentContract } from '../chunk-HJMSMLTZ.js';
2
- import '../chunk-3GZQUVY3.js';
1
+ export { PaymentCreateOrderDataSchema, PaymentCreateOrderInputSchema, PaymentNotifyMessageSchema, PaymentOrderSchema, PaymentProviderSchema, PaymentQueryOrderInputSchema, PaymentRefundDataSchema, PaymentRefundInputSchema, PaymentStripeNotifyDataSchema, PaymentTradeTypeSchema, paymentContract } from '../chunk-JIQINMLG.js';
2
+ import '../chunk-CUU2F6YD.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -2,6 +2,7 @@ import * as _orpc_contract from '@orpc/contract';
2
2
  import * as zod_v4_core from 'zod/v4/core';
3
3
  import * as zod from 'zod';
4
4
  import { z } from 'zod';
5
+ import { HaiResult } from '@h-ai/core';
5
6
 
6
7
  /**
7
8
  * @h-ai/api-contract — Storage 领域 contract
@@ -165,7 +166,7 @@ type StorageContract = typeof storageContract;
165
166
  * @h-ai/api-contract — Storage 领域 Schema
166
167
  *
167
168
  * 包含文件元数据、预签名 URL、文件列表与删除相关的 input/output Zod Schema。
168
- * 所有 Output Schema 均用 `haiResultSchema()` 封装。
169
+ * 仅保留跨接口、跨层复用的数据结构;一次性输出包装在 contract 中内联。
169
170
  * @module storage-schemas
170
171
  */
171
172
 
@@ -225,98 +226,11 @@ declare const StorageFileKeyInputSchema: z.ZodObject<{
225
226
  declare const StorageDeleteFilesInputSchema: z.ZodObject<{
226
227
  keys: z.ZodArray<z.ZodString>;
227
228
  }, z.core.$strip>;
228
- declare const StoragePresignedUrlOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
229
- success: z.ZodLiteral<true>;
230
- data: z.ZodObject<{
231
- url: z.ZodString;
232
- key: z.ZodString;
233
- expiresAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
234
- }, z.core.$strip>;
235
- }, z.core.$strip>, z.ZodObject<{
236
- success: z.ZodLiteral<false>;
237
- error: z.ZodObject<{
238
- code: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
239
- message: z.ZodString;
240
- httpStatus: z.ZodOptional<z.ZodNumber>;
241
- system: z.ZodOptional<z.ZodString>;
242
- module: z.ZodOptional<z.ZodString>;
243
- cause: z.ZodOptional<z.ZodUnknown>;
244
- suggestion: z.ZodOptional<z.ZodString>;
245
- ext: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
246
- }, z.core.$strip>;
247
- }, z.core.$strip>], "success">;
248
- declare const StorageFileMetadataOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
249
- success: z.ZodLiteral<true>;
250
- data: z.ZodObject<{
251
- key: z.ZodString;
252
- size: z.ZodNumber;
253
- contentType: z.ZodString;
254
- lastModified: z.ZodCoercedDate<unknown>;
255
- etag: z.ZodOptional<z.ZodString>;
256
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
257
- }, z.core.$strip>;
258
- }, z.core.$strip>, z.ZodObject<{
259
- success: z.ZodLiteral<false>;
260
- error: z.ZodObject<{
261
- code: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
262
- message: z.ZodString;
263
- httpStatus: z.ZodOptional<z.ZodNumber>;
264
- system: z.ZodOptional<z.ZodString>;
265
- module: z.ZodOptional<z.ZodString>;
266
- cause: z.ZodOptional<z.ZodUnknown>;
267
- suggestion: z.ZodOptional<z.ZodString>;
268
- ext: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
269
- }, z.core.$strip>;
270
- }, z.core.$strip>], "success">;
271
- declare const StorageListFilesOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
272
- success: z.ZodLiteral<true>;
273
- data: z.ZodObject<{
274
- files: z.ZodArray<z.ZodObject<{
275
- key: z.ZodString;
276
- size: z.ZodNumber;
277
- contentType: z.ZodString;
278
- lastModified: z.ZodCoercedDate<unknown>;
279
- etag: z.ZodOptional<z.ZodString>;
280
- metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
281
- }, z.core.$strip>>;
282
- commonPrefixes: z.ZodArray<z.ZodString>;
283
- nextContinuationToken: z.ZodOptional<z.ZodString>;
284
- isTruncated: z.ZodBoolean;
285
- }, z.core.$strip>;
286
- }, z.core.$strip>, z.ZodObject<{
287
- success: z.ZodLiteral<false>;
288
- error: z.ZodObject<{
289
- code: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
290
- message: z.ZodString;
291
- httpStatus: z.ZodOptional<z.ZodNumber>;
292
- system: z.ZodOptional<z.ZodString>;
293
- module: z.ZodOptional<z.ZodString>;
294
- cause: z.ZodOptional<z.ZodUnknown>;
295
- suggestion: z.ZodOptional<z.ZodString>;
296
- ext: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
297
- }, z.core.$strip>;
298
- }, z.core.$strip>], "success">;
299
- declare const StorageVoidOutputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
300
- success: z.ZodLiteral<true>;
301
- data: z.ZodVoid;
302
- }, z.core.$strip>, z.ZodObject<{
303
- success: z.ZodLiteral<false>;
304
- error: z.ZodObject<{
305
- code: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
306
- message: z.ZodString;
307
- httpStatus: z.ZodOptional<z.ZodNumber>;
308
- system: z.ZodOptional<z.ZodString>;
309
- module: z.ZodOptional<z.ZodString>;
310
- cause: z.ZodOptional<z.ZodUnknown>;
311
- suggestion: z.ZodOptional<z.ZodString>;
312
- ext: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
313
- }, z.core.$strip>;
314
- }, z.core.$strip>], "success">;
315
229
  type StoragePresignDownloadInput = z.infer<typeof StoragePresignDownloadInputSchema>;
316
230
  type StoragePresignUploadInput = z.infer<typeof StoragePresignUploadInputSchema>;
317
- type StoragePresignedUrlOutput = z.infer<typeof StoragePresignedUrlOutputSchema>;
231
+ type StoragePresignedUrlOutput = HaiResult<z.infer<typeof StoragePresignedUrlSchema>>;
318
232
  type StorageListFilesInput = z.infer<typeof StorageListFilesInputSchema>;
319
233
  type StorageFileKeyInput = z.infer<typeof StorageFileKeyInputSchema>;
320
234
  type StorageDeleteFilesInput = z.infer<typeof StorageDeleteFilesInputSchema>;
321
235
 
322
- export { type StorageContract, type StorageDeleteFilesInput, StorageDeleteFilesInputSchema, type StorageFileKeyInput, StorageFileKeyInputSchema, StorageFileMetadataOutputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, type StorageListFilesInput, StorageListFilesInputSchema, StorageListFilesOutputSchema, type StoragePresignDownloadInput, StoragePresignDownloadInputSchema, type StoragePresignUploadInput, StoragePresignUploadInputSchema, type StoragePresignedUrlOutput, StoragePresignedUrlOutputSchema, StoragePresignedUrlSchema, StorageVoidOutputSchema, storageContract };
236
+ export { type StorageContract, type StorageDeleteFilesInput, StorageDeleteFilesInputSchema, type StorageFileKeyInput, StorageFileKeyInputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, type StorageListFilesInput, StorageListFilesInputSchema, type StoragePresignDownloadInput, StoragePresignDownloadInputSchema, type StoragePresignUploadInput, StoragePresignUploadInputSchema, type StoragePresignedUrlOutput, StoragePresignedUrlSchema, storageContract };
@@ -1,4 +1,4 @@
1
- export { StorageDeleteFilesInputSchema, StorageFileKeyInputSchema, StorageFileMetadataOutputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, StorageListFilesInputSchema, StorageListFilesOutputSchema, StoragePresignDownloadInputSchema, StoragePresignUploadInputSchema, StoragePresignedUrlOutputSchema, StoragePresignedUrlSchema, StorageVoidOutputSchema, storageContract } from '../chunk-DKBPLQMI.js';
2
- import '../chunk-3GZQUVY3.js';
1
+ export { StorageDeleteFilesInputSchema, StorageFileKeyInputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, StorageListFilesInputSchema, StoragePresignDownloadInputSchema, StoragePresignUploadInputSchema, StoragePresignedUrlSchema, storageContract } from '../chunk-3QSKWVLP.js';
2
+ import '../chunk-CUU2F6YD.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@h-ai/api-contract",
3
3
  "type": "module",
4
- "version": "0.1.0-alpha.42",
4
+ "version": "0.1.0-alpha.44",
5
5
  "description": "Hai Framework public API contracts powered by oRPC and Zod.",
6
6
  "license": "Apache-2.0",
7
7
  "exports": {
@@ -38,7 +38,7 @@
38
38
  "dependencies": {
39
39
  "@orpc/contract": "^1.14.3",
40
40
  "zod": "^4.4.3",
41
- "@h-ai/core": "0.1.0-alpha.42"
41
+ "@h-ai/core": "0.1.0-alpha.44"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@types/node": "^25.9.1",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/common/result-schemas.ts","../src/common/route.ts"],"names":[],"mappings":";;;;AAeO,IAAM,cAAA,GAAiB,EAAE,MAAA,CAAO;AAAA,EACrC,IAAA,EAAM,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,QAAO,EAAG,CAAA,CAAE,MAAA,EAAQ,CAAC,CAAA;AAAA,EACtC,OAAA,EAAS,EAAE,MAAA,EAAO;AAAA,EAClB,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChC,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,KAAA,EAAO,CAAA,CAAE,OAAA,EAAQ,CAAE,QAAA,EAAS;AAAA,EAC5B,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChC,GAAA,EAAK,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,OAAA,EAAS,CAAA,CAAE,QAAA;AACzC,CAAC;AAaM,SAAS,gBAAqC,UAAA,EAAe;AAClE,EAAA,OAAO,CAAA,CAAE,mBAAmB,SAAA,EAAW;AAAA,IACrC,EAAE,MAAA,CAAO;AAAA,MACP,OAAA,EAAS,CAAA,CAAE,OAAA,CAAQ,IAAI,CAAA;AAAA,MACvB,IAAA,EAAM;AAAA,KACP,CAAA;AAAA,IACD,EAAE,MAAA,CAAO;AAAA,MACP,OAAA,EAAS,CAAA,CAAE,OAAA,CAAQ,KAAK,CAAA;AAAA,MACxB,KAAA,EAAO;AAAA,KACR;AAAA,GACF,CAAA;AACH;AAGO,IAAM,mBAAA,GAAsB,eAAA,CAAgB,CAAA,CAAE,IAAA,EAAM;ACzCpD,IAAM,QAAyB,CAAA,GAAI,IAAA,KAAS,EAAA,CAAG,KAAA,CAAM,GAAG,IAAI","file":"chunk-3GZQUVY3.js","sourcesContent":["/**\n * @h-ai/api-contract — HaiResult Schema\n *\n * 提供与 `@h-ai/core` HaiResult<T> 结构一致的 Zod Schema 工厂,\n * 用于 oRPC contract 的 output 定义和客户端响应校验。\n * @module result-schemas\n */\n\nimport { z } from 'zod'\n\n/**\n * HaiError 的跨端 JSON Schema。\n *\n * 仅描述公共错误字段,不暴露内部异常对象结构。\n */\nexport const HaiErrorSchema = z.object({\n code: z.union([z.string(), z.number()]),\n message: z.string(),\n httpStatus: z.number().optional(),\n system: z.string().optional(),\n module: z.string().optional(),\n cause: z.unknown().optional(),\n suggestion: z.string().optional(),\n ext: z.record(z.string(), z.unknown()).optional(),\n})\n\n/**\n * 创建与 @h-ai/core HaiResult<T> 一致的响应 Schema。\n *\n * @param dataSchema - 成功分支 data 字段 Schema\n * @returns HaiResult<T> 的 Zod Schema\n *\n * @example\n * ```ts\n * const OutputSchema = haiResultSchema(z.object({ id: z.string() }))\n * ```\n */\nexport function haiResultSchema<T extends z.ZodType>(dataSchema: T) {\n return z.discriminatedUnion('success', [\n z.object({\n success: z.literal(true),\n data: dataSchema,\n }),\n z.object({\n success: z.literal(false),\n error: HaiErrorSchema,\n }),\n ])\n}\n\n/** 无内容成功响应 Schema。 */\nexport const HaiVoidResultSchema = haiResultSchema(z.void())\n","/**\n * @h-ai/api-contract — route builder\n *\n * 统一封装 oRPC 的 route builder。应用与契约包通过 `apiContract.route(...)`\n * 定义 HTTP 路由元数据,不需要直接依赖 `@orpc/contract` 或 `@h-ai/serv`。\n */\n\nimport { oc } from '@orpc/contract'\n\n/** 创建 oRPC contract 路由节点。 */\nexport const route: typeof oc.route = (...args) => oc.route(...args)\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/storage/storage-schemas.ts","../src/storage/storage-contract.ts"],"names":[],"mappings":"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","file":"chunk-DKBPLQMI.js","sourcesContent":["/**\n * @h-ai/api-contract — Storage 领域 Schema\n *\n * 包含文件元数据、预签名 URL、文件列表与删除相关的 input/output Zod Schema。\n * 所有 Output Schema 均用 `haiResultSchema()` 封装。\n * @module storage-schemas\n */\n\nimport { z } from 'zod'\nimport { haiResultSchema } from '../common/result-schemas.js'\n\n/** 文件元数据 Schema。 */\nexport const StorageFileMetadataSchema = z.object({\n key: z.string(),\n size: z.number(),\n contentType: z.string(),\n lastModified: z.coerce.date(),\n etag: z.string().optional(),\n metadata: z.record(z.string(), z.string()).optional(),\n})\n\n/** 获取下载签名 URL 入参 Schema。 */\nexport const StoragePresignDownloadInputSchema = z.object({\n key: z.string().min(1),\n expiresIn: z.number().int().min(1).optional(),\n})\n\n/** 获取上传签名 URL 入参 Schema。 */\nexport const StoragePresignUploadInputSchema = z.object({\n key: z.string().min(1),\n contentType: z.string().optional(),\n contentLength: z.number().int().min(1).optional(),\n expiresIn: z.number().int().min(1).optional(),\n})\n\n/** 签名 URL 业务数据 Schema。 */\nexport const StoragePresignedUrlSchema = z.object({\n url: z.string(),\n key: z.string(),\n expiresAt: z.coerce.date().optional(),\n})\n\n/** 文件列表查询入参 Schema。 */\nexport const StorageListFilesInputSchema = z.object({\n prefix: z.string().optional(),\n maxKeys: z.coerce.number().int().min(1).max(1000).optional(),\n continuationToken: z.string().optional(),\n delimiter: z.string().optional(),\n})\n\n/** 文件列表业务数据 Schema。 */\nexport const StorageListFilesDataSchema = z.object({\n files: z.array(StorageFileMetadataSchema),\n commonPrefixes: z.array(z.string()),\n nextContinuationToken: z.string().optional(),\n isTruncated: z.boolean(),\n})\n\n/** 单文件操作入参 Schema。 */\nexport const StorageFileKeyInputSchema = z.object({\n key: z.string().min(1),\n})\n\n/** 批量删除文件入参 Schema。 */\nexport const StorageDeleteFilesInputSchema = z.object({\n keys: z.array(z.string().min(1)).min(1),\n})\n\nexport const StoragePresignedUrlOutputSchema = haiResultSchema(StoragePresignedUrlSchema)\nexport const StorageFileMetadataOutputSchema = haiResultSchema(StorageFileMetadataSchema)\nexport const StorageListFilesOutputSchema = haiResultSchema(StorageListFilesDataSchema)\nexport const StorageVoidOutputSchema = haiResultSchema(z.void())\n\nexport type StoragePresignDownloadInput = z.infer<typeof StoragePresignDownloadInputSchema>\nexport type StoragePresignUploadInput = z.infer<typeof StoragePresignUploadInputSchema>\nexport type StoragePresignedUrlOutput = z.infer<typeof StoragePresignedUrlOutputSchema>\nexport type StorageListFilesInput = z.infer<typeof StorageListFilesInputSchema>\nexport type StorageFileKeyInput = z.infer<typeof StorageFileKeyInputSchema>\nexport type StorageDeleteFilesInput = z.infer<typeof StorageDeleteFilesInputSchema>\n","/**\n * @h-ai/api-contract — Storage 领域 contract\n *\n * 定义文件存储相关 API 的接口边界:预签名 URL 生成与文件管理。\n * 所有接口均需 Bearer Token 认证(由 `@h-ai/serv` 的 feature 层强制)。\n * @module storage-contract\n */\n\nimport { route } from '../common/route.js'\nimport {\n StorageDeleteFilesInputSchema,\n StorageFileKeyInputSchema,\n StorageFileMetadataOutputSchema,\n StorageListFilesInputSchema,\n StorageListFilesOutputSchema,\n StoragePresignDownloadInputSchema,\n StoragePresignedUrlOutputSchema,\n StoragePresignUploadInputSchema,\n StorageVoidOutputSchema,\n} from './storage-schemas.js'\n\n/** Storage 领域 oRPC contract。 */\nexport const storageContract = {\n presignedUrls: {\n createDownload: route({ method: 'POST', path: '/storage/presigned-urls/download', operationId: 'storage.presignedUrls.createDownload', summary: 'Create presigned download URL', tags: ['storage'] })\n .input(StoragePresignDownloadInputSchema)\n .output(StoragePresignedUrlOutputSchema),\n createUpload: route({ method: 'POST', path: '/storage/presigned-urls/upload', operationId: 'storage.presignedUrls.createUpload', summary: 'Create presigned upload URL', tags: ['storage'] })\n .input(StoragePresignUploadInputSchema)\n .output(StoragePresignedUrlOutputSchema),\n },\n files: {\n list: route({ method: 'GET', path: '/storage/files', operationId: 'storage.files.list', summary: 'List files', tags: ['storage'] })\n .input(StorageListFilesInputSchema)\n .output(StorageListFilesOutputSchema),\n getMetadata: route({ method: 'POST', path: '/storage/files/metadata', operationId: 'storage.files.getMetadata', summary: 'Get file metadata', tags: ['storage'] })\n .input(StorageFileKeyInputSchema)\n .output(StorageFileMetadataOutputSchema),\n delete: route({ method: 'DELETE', path: '/storage/files', operationId: 'storage.files.delete', summary: 'Delete file', tags: ['storage'] })\n .input(StorageFileKeyInputSchema)\n .output(StorageVoidOutputSchema),\n deleteMany: route({ method: 'POST', path: '/storage/files/delete-many', operationId: 'storage.files.deleteMany', summary: 'Delete files', tags: ['storage'] })\n .input(StorageDeleteFilesInputSchema)\n .output(StorageVoidOutputSchema),\n },\n}\n\nexport type StorageContract = typeof storageContract\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ai/ai-audio-ws-schemas.ts","../src/ai/ai-schemas.ts","../src/ai/ai-contract.ts"],"names":["z"],"mappings":"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","file":"chunk-EZVXYX3T.js","sourcesContent":["/**\n * Audio WebSocket 传输协议的运行时 Schema。\n *\n * 该协议同时被 AI 客户端与 Serv 服务端消费,因此由 api-contract 维护单一事实源,\n * 避免 Serv 根入口为了校验可选 Audio 消息而静态加载整个 `@h-ai/ai` 包。\n */\nimport { z } from 'zod'\n\n/** 统一语音入口的默认路径(相对 API 前缀)。 */\nexport const AUDIO_WS_PATH = '/ai/audio'\n\n/** 合法音频格式。 */\nexport const AudioFormatSchema = z.enum(['pcm16', 'wav', 'mp3', 'opus'])\n\nconst MAX_CONTROL_FIELD_LEN = 512\nconst MAX_HINT_LEN = 256\nconst MAX_HINTS = 64\nconst MAX_SEGMENT_ID_LEN = 128\nconst MIN_SAMPLE_RATE = 8000\nconst MAX_SAMPLE_RATE = 192000\n\n/** 会话起始帧 Schema。 */\nexport const AudioWsStartMessageSchema = z.object({\n type: z.literal('start'),\n operation: z.enum(['transcribe', 'synthesize']),\n stream: z.boolean().optional(),\n model: z.string().max(MAX_CONTROL_FIELD_LEN).optional(),\n language: z.string().max(MAX_CONTROL_FIELD_LEN).optional(),\n contextHints: z.array(z.string().max(MAX_HINT_LEN)).max(MAX_HINTS).optional(),\n voice: z.string().max(MAX_CONTROL_FIELD_LEN).optional(),\n instruction: z.string().max(MAX_CONTROL_FIELD_LEN).optional(),\n format: AudioFormatSchema.optional(),\n sampleRate: z.number().int().min(MIN_SAMPLE_RATE).max(MAX_SAMPLE_RATE).optional(),\n channels: z.union([z.literal(1), z.literal(2)]).optional(),\n})\n\n/** 文本输入帧 Schema。 */\nexport const AudioWsTextMessageSchema = z.object({\n type: z.literal('text'),\n segmentId: z.string().min(1).max(MAX_SEGMENT_ID_LEN),\n text: z.string(),\n})\n\n/** 输入结束帧 Schema。 */\nexport const AudioWsDoneMessageSchema = z.object({\n type: z.literal('done'),\n})\n\n/** 客户端 JSON 控制消息 Schema。 */\nexport const AudioWsClientMessageSchema = z.discriminatedUnion('type', [\n AudioWsStartMessageSchema,\n AudioWsTextMessageSchema,\n AudioWsDoneMessageSchema,\n])\n","/**\n * @h-ai/api-contract — AI 领域 Schema\n *\n * 包含聊天补全、消息占位、记忆召回与历史会话相关的 input/output Zod Schema。\n * 聊天补全结构对齐 OpenAI Chat Completions API,支持 tool calling。\n * 所有 Output Schema 均用 `haiResultSchema()` 封装。\n * @module ai-schemas\n */\n\nimport { z } from 'zod'\nimport { haiResultSchema } from '../common/result-schemas.js'\n\n/** 消息角色 Schema。 */\nexport const AiMessageRoleSchema = z.enum(['system', 'user', 'assistant', 'tool'])\n\n/** 文本内容 Schema。 */\nexport const AiTextContentSchema = z.object({\n type: z.literal('text'),\n text: z.string(),\n})\n\n/** 图片内容 Schema。 */\nexport const AiImageContentSchema = z.object({\n type: z.literal('image_url'),\n image_url: z.object({\n url: z.string(),\n detail: z.enum(['auto', 'low', 'high']).optional(),\n }),\n})\n\n/** 消息内容 Schema。 */\nexport const AiMessageContentSchema = z.union([\n z.string(),\n z.array(z.union([AiTextContentSchema, AiImageContentSchema])),\n])\n\n/** 工具调用 Schema。 */\nexport const AiToolCallSchema = z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n})\n\n/** 聊天消息 Schema。 */\nexport const AiChatMessageSchema = z.object({\n role: AiMessageRoleSchema,\n content: AiMessageContentSchema.optional(),\n name: z.string().optional(),\n tool_calls: z.array(AiToolCallSchema).optional(),\n tool_call_id: z.string().optional(),\n})\n\n/** 工具参数 Schema。 */\nexport const AiToolParameterSchema = z.object({\n type: z.string(),\n description: z.string().optional(),\n enum: z.array(z.string()).optional(),\n})\n\n/** 工具定义 Schema。 */\nexport const AiToolDefinitionSchema = z.object({\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n description: z.string().optional(),\n parameters: z.object({\n type: z.literal('object'),\n properties: z.record(z.string(), AiToolParameterSchema).optional(),\n required: z.array(z.string()).optional(),\n }).optional(),\n }),\n})\n\n/** 聊天完成入参 Schema。 */\nexport const AiChatCompletionInputSchema = z.object({\n model: z.string().optional(),\n messages: z.array(AiChatMessageSchema).min(1),\n temperature: z.number().min(0).max(2).optional(),\n top_p: z.number().min(0).max(1).optional(),\n max_tokens: z.number().int().min(1).optional(),\n stream: z.boolean().optional(),\n tools: z.array(AiToolDefinitionSchema).optional(),\n tool_choice: z.union([\n z.literal('auto'),\n z.literal('none'),\n z.object({ type: z.literal('function'), function: z.object({ name: z.string() }) }),\n ]).optional(),\n})\n\n/** Token 使用统计 Schema。 */\nexport const AiTokenUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n})\n\n/** 助手消息 Schema。 */\nexport const AiAssistantMessageSchema = z.object({\n role: z.literal('assistant'),\n content: z.string().nullable().optional(),\n tool_calls: z.array(AiToolCallSchema).optional(),\n})\n\n/** 聊天完成选择 Schema。 */\nexport const AiChatCompletionChoiceSchema = z.object({\n index: z.number(),\n message: AiAssistantMessageSchema,\n finish_reason: z.enum(['stop', 'length', 'tool_calls', 'content_filter']),\n})\n\n/** 聊天完成业务数据 Schema。 */\nexport const AiChatCompletionDataSchema = z.object({\n id: z.string(),\n object: z.literal('chat.completion'),\n created: z.number(),\n model: z.string(),\n choices: z.array(AiChatCompletionChoiceSchema),\n usage: AiTokenUsageSchema,\n})\n\n/** 简单消息入参 Schema。 */\nexport const AiSendMessageInputSchema = z.object({\n message: z.string().min(1),\n systemPrompt: z.string().optional(),\n model: z.string().optional(),\n temperature: z.number().min(0).max(2).optional(),\n})\n\n/** 简单消息业务数据 Schema。 */\nexport const AiSendMessageDataSchema = z.object({\n content: z.string(),\n model: z.string(),\n usage: AiTokenUsageSchema.optional(),\n})\n\n/** 记忆类型 Schema。 */\nexport const AiMemoryTypeSchema = z.enum(['fact', 'preference', 'event', 'entity', 'instruction'])\n\n/** 记忆条目 Schema。 */\nexport const AiMemoryEntrySchema = z.object({\n id: z.string(),\n content: z.string(),\n type: AiMemoryTypeSchema,\n importance: z.number(),\n objectId: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n createdAt: z.number(),\n lastAccessedAt: z.number(),\n accessCount: z.number(),\n})\n\n/** 记忆检索入参 Schema。 */\nexport const AiMemoryRecallInputSchema = z.object({\n query: z.string().min(1),\n topK: z.number().int().min(1).optional(),\n types: z.array(AiMemoryTypeSchema).optional(),\n minImportance: z.number().min(0).max(1).optional(),\n objectId: z.string().optional(),\n})\n\n/** 记忆检索业务数据 Schema。 */\nexport const AiMemoryRecallDataSchema = z.object({\n items: z.array(AiMemoryEntrySchema),\n})\n\n/** 记忆列表入参 Schema。 */\nexport const AiMemoryListInputSchema = z.object({\n types: z.array(AiMemoryTypeSchema).optional(),\n objectId: z.string().optional(),\n offset: z.number().int().min(0).optional(),\n limit: z.number().int().min(1).max(100).optional(),\n})\n\n/** 记忆列表业务数据 Schema。 */\nexport const AiMemoryListDataSchema = z.object({\n items: z.array(AiMemoryEntrySchema),\n total: z.number(),\n})\n\n/** 会话信息 Schema。 */\nexport const AiSessionInfoSchema = z.object({\n objectId: z.string(),\n sessionId: z.string(),\n createdAt: z.number(),\n updatedAt: z.number(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n})\n\n/** 会话列表入参 Schema。 */\nexport const AiSessionListInputSchema = z.object({\n objectId: z.string().min(1),\n})\n\n/** 会话列表业务数据 Schema。 */\nexport const AiSessionListDataSchema = z.object({\n items: z.array(AiSessionInfoSchema),\n})\n\n/** 对话记录 Schema。 */\nexport const AiChatRecordSchema = z.object({\n id: z.string(),\n objectId: z.string(),\n sessionId: z.string(),\n request: z.object({\n model: z.string(),\n messages: z.array(AiChatMessageSchema),\n }),\n response: z.object({\n content: z.string(),\n toolCalls: z.array(AiToolCallSchema).optional(),\n finishReason: z.string(),\n usage: AiTokenUsageSchema,\n }),\n createdAt: z.number(),\n duration: z.number(),\n})\n\n/** 对话历史入参 Schema。 */\nexport const AiChatHistoryInputSchema = z.object({\n objectId: z.string().min(1),\n sessionId: z.string().min(1),\n limit: z.number().int().min(1).max(200).optional(),\n order: z.enum(['asc', 'desc']).optional(),\n})\n\n/** 对话历史业务数据 Schema。 */\nexport const AiChatHistoryDataSchema = z.object({\n items: z.array(AiChatRecordSchema),\n})\n\nexport const AiChatCompletionOutputSchema = haiResultSchema(AiChatCompletionDataSchema)\nexport const AiSendMessageOutputSchema = haiResultSchema(AiSendMessageDataSchema)\nexport const AiMemoryRecallOutputSchema = haiResultSchema(AiMemoryRecallDataSchema)\nexport const AiMemoryListOutputSchema = haiResultSchema(AiMemoryListDataSchema)\nexport const AiSessionListOutputSchema = haiResultSchema(AiSessionListDataSchema)\nexport const AiChatHistoryOutputSchema = haiResultSchema(AiChatHistoryDataSchema)\n\nexport type AiChatCompletionInput = z.infer<typeof AiChatCompletionInputSchema>\nexport type AiChatCompletionData = z.infer<typeof AiChatCompletionDataSchema>\nexport type AiChatCompletionOutput = z.infer<typeof AiChatCompletionOutputSchema>\nexport type AiSendMessageInput = z.infer<typeof AiSendMessageInputSchema>\nexport type AiSendMessageData = z.infer<typeof AiSendMessageDataSchema>\nexport type AiSendMessageOutput = z.infer<typeof AiSendMessageOutputSchema>\nexport type AiMemoryRecallInput = z.infer<typeof AiMemoryRecallInputSchema>\nexport type AiMemoryListInput = z.infer<typeof AiMemoryListInputSchema>\nexport type AiSessionListInput = z.infer<typeof AiSessionListInputSchema>\nexport type AiChatHistoryInput = z.infer<typeof AiChatHistoryInputSchema>\nexport type AiChatRecord = z.infer<typeof AiChatRecordSchema>\n","/**\n * @h-ai/api-contract — AI 领域 contract\n *\n * 定义 AI 功能相关 API 的接口边界:聊天补全、记忆管理与会话管理。\n * 聊天补全使用 OpenAI 兼容结构(`messages` 数组 + `choices` 数组)。\n * 所有接口均需 Bearer Token 认证(由 `@h-ai/serv` 的 feature 层强制)。\n * @module ai-contract\n */\n\nimport { route } from '../common/route.js'\nimport {\n AiChatCompletionInputSchema,\n AiChatCompletionOutputSchema,\n AiChatHistoryInputSchema,\n AiChatHistoryOutputSchema,\n AiMemoryListInputSchema,\n AiMemoryListOutputSchema,\n AiMemoryRecallInputSchema,\n AiMemoryRecallOutputSchema,\n AiSendMessageInputSchema,\n AiSendMessageOutputSchema,\n AiSessionListInputSchema,\n AiSessionListOutputSchema,\n} from './ai-schemas.js'\n\n/** AI 领域 oRPC contract。 */\nexport const aiContract = {\n chats: {\n createCompletion: route({ method: 'POST', path: '/ai/chats/completions', operationId: 'ai.chats.createCompletion', summary: 'Create chat completion', tags: ['ai', 'chats'] })\n .input(AiChatCompletionInputSchema)\n .output(AiChatCompletionOutputSchema),\n sendMessage: route({ method: 'POST', path: '/ai/chats/messages', operationId: 'ai.chats.sendMessage', summary: 'Send a single chat message', tags: ['ai', 'chats'] })\n .input(AiSendMessageInputSchema)\n .output(AiSendMessageOutputSchema),\n listHistory: route({ method: 'POST', path: '/ai/chats/history', operationId: 'ai.chats.listHistory', summary: 'List chat history', tags: ['ai', 'chats'] })\n .input(AiChatHistoryInputSchema)\n .output(AiChatHistoryOutputSchema),\n },\n memories: {\n recall: route({ method: 'POST', path: '/ai/memories/recall', operationId: 'ai.memories.recall', summary: 'Recall relevant memories', tags: ['ai', 'memories'] })\n .input(AiMemoryRecallInputSchema)\n .output(AiMemoryRecallOutputSchema),\n list: route({ method: 'POST', path: '/ai/memories/list', operationId: 'ai.memories.list', summary: 'List memories', tags: ['ai', 'memories'] })\n .input(AiMemoryListInputSchema)\n .output(AiMemoryListOutputSchema),\n },\n sessions: {\n list: route({ method: 'POST', path: '/ai/sessions/list', operationId: 'ai.sessions.list', summary: 'List sessions', tags: ['ai', 'sessions'] })\n .input(AiSessionListInputSchema)\n .output(AiSessionListOutputSchema),\n },\n}\n\nexport type AiContract = typeof aiContract\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/payment/payment-schemas.ts","../src/payment/payment-contract.ts"],"names":["z"],"mappings":";;;AAIO,IAAM,wBAAwB,CAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAC;AAGnE,IAAM,sBAAA,GAAyB,EAAE,IAAA,CAAK,CAAC,SAAS,IAAA,EAAM,KAAA,EAAO,QAAA,EAAU,cAAc,CAAC;AAGtF,IAAM,6BAAA,GAAgC,EAAE,MAAA,CAAO;AAAA,EACpD,QAAA,EAAU,qBAAA;AAAA,EACV,QAAQ,CAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC,CAAA;AAAA,EAC9B,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC7B,SAAA,EAAW,sBAAA;AAAA,EACX,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,QAAA,EAAU,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,IAAU,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA;AAC7C,CAAC;AAGM,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EACnD,QAAA,EAAU,qBAAA;AAAA,EACV,SAAA,EAAW,sBAAA;AAAA,EACX,YAAA,EAAc,EAAE,MAAA,CAAO,CAAA,CAAE,QAAO,EAAG,CAAA,CAAE,SAAS,CAAA;AAAA,EAC9C,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACvB,CAAC;AAGM,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EACnD,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC;AAC3B,CAAC;AAGM,IAAM,kBAAA,GAAqB,EAAE,MAAA,CAAO;AAAA,EACzC,OAAA,EAAS,EAAE,MAAA,EAAO;AAAA,EAClB,aAAA,EAAe,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACnC,MAAA,EAAQ,EAAE,IAAA,CAAK,CAAC,WAAW,MAAA,EAAQ,QAAA,EAAU,UAAA,EAAY,QAAQ,CAAC,CAAA;AAAA,EAClE,MAAA,EAAQ,EAAE,MAAA,EAAO;AAAA;AAAA,EAEjB,MAAA,EAAQ,CAAA,CAAE,GAAA,CAAI,QAAA,GAAW,QAAA;AAC3B,CAAC;AAGM,IAAM,wBAAA,GAA2B,EAAE,MAAA,CAAO;AAAA,EAC/C,QAAA,EAAU,qBAAA;AAAA,EACV,OAAA,EAAS,EAAE,MAAA,EAAO;AAAA,EAClB,QAAA,EAAU,EAAE,MAAA,EAAO;AAAA,EACnB,QAAQ,CAAA,CAAE,MAAA,GAAS,GAAA,EAAI,CAAE,IAAI,CAAC,CAAA;AAAA,EAC9B,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACrB,CAAC;AAGM,IAAM,uBAAA,GAA0B,EAAE,MAAA,CAAO;AAAA,EAC9C,QAAA,EAAU,EAAE,MAAA,EAAO;AAAA,EACnB,QAAA,EAAU,EAAE,MAAA,EAAO;AAAA,EACnB,QAAQ,CAAA,CAAE,IAAA,CAAK,CAAC,YAAA,EAAc,SAAA,EAAW,QAAQ,CAAC;AACpD,CAAC;AAGM,IAAM,0BAAA,GAA6B,EAAE,MAAA,CAAO;AAAA,EACjD,IAAA,EAAM,EAAE,MAAA,EAAO;AAAA,EACf,OAAA,EAAS,EAAE,MAAA;AACb,CAAC;AAGM,IAAM,6BAAA,GAAgC,EAAE,MAAA,CAAO;AAAA,EACpD,QAAA,EAAU,EAAE,OAAA;AACd,CAAC;AAEM,IAAM,8BAAA,GAAiC,gBAAgB,4BAA4B;AACnF,IAAM,6BAAA,GAAgC,gBAAgB,kBAAkB;AACxE,IAAM,yBAAA,GAA4B,gBAAgB,uBAAuB;AACzE,IAAM,gCAAA,GAAmC,gBAAgB,0BAA0B;AACnF,IAAM,+BAAA,GAAkC,gBAAgB,6BAA6B;AC1D5F,IAAM,iBAAA,GAAoBA,EAAE,OAAA,EAAQ;AAG7B,IAAM,eAAA,GAAkB;AAAA,EAC7B,MAAA,EAAQ;AAAA,IACN,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,iBAAA,EAAmB,WAAA,EAAa,uBAAA,EAAyB,OAAA,EAAS,sBAAA,EAAwB,MAAM,CAAC,SAAA,EAAW,QAAQ,CAAA,EAAG,EAC1J,KAAA,CAAM,6BAA6B,CAAA,CACnC,MAAA,CAAO,8BAA8B,CAAA;AAAA,IACxC,GAAA,EAAK,MAAM,EAAE,MAAA,EAAQ,OAAO,IAAA,EAAM,2BAAA,EAA6B,WAAA,EAAa,oBAAA,EAAsB,OAAA,EAAS,mBAAA,EAAqB,MAAM,CAAC,SAAA,EAAW,QAAQ,CAAA,EAAG,EAC1J,KAAA,CAAM,4BAA4B,CAAA,CAClC,MAAA,CAAO,6BAA6B,CAAA;AAAA,IACvC,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,mCAAA,EAAqC,WAAA,EAAa,uBAAA,EAAyB,OAAA,EAAS,sBAAA,EAAwB,MAAM,CAAC,SAAA,EAAW,QAAQ,CAAA,EAAG,EAC5K,KAAA,CAAM,wBAAwB,CAAA,CAC9B,MAAA,CAAO,yBAAyB;AAAA,GACrC;AAAA,EACA,aAAA,EAAe;AAAA,IACb,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,+BAAA,EAAiC,WAAA,EAAa,8BAAA,EAAgC,OAAA,EAAS,oCAAA,EAAsC,MAAM,CAAC,SAAA,EAAW,eAAe,CAAA,EAAG,EACpM,KAAA,CAAM,iBAAiB,CAAA,CACvB,MAAA,CAAO,gCAAgC,CAAA;AAAA,IAC1C,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,+BAAA,EAAiC,WAAA,EAAa,8BAAA,EAAgC,OAAA,EAAS,oCAAA,EAAsC,MAAM,CAAC,SAAA,EAAW,eAAe,CAAA,EAAG,EACpM,KAAA,CAAM,iBAAiB,CAAA,CACvB,MAAA,CAAO,gCAAgC,CAAA;AAAA,IAC1C,MAAA,EAAQ,MAAM,EAAE,MAAA,EAAQ,QAAQ,IAAA,EAAM,+BAAA,EAAiC,WAAA,EAAa,8BAAA,EAAgC,OAAA,EAAS,oCAAA,EAAsC,MAAM,CAAC,SAAA,EAAW,eAAe,CAAA,EAAG,EACpM,KAAA,CAAM,iBAAiB,CAAA,CACvB,MAAA,CAAO,+BAA+B;AAAA;AAE7C","file":"chunk-HJMSMLTZ.js","sourcesContent":["import { z } from 'zod'\nimport { haiResultSchema } from '../common/result-schemas.js'\n\n/** 支付渠道 Schema。 */\nexport const PaymentProviderSchema = z.enum(['wechat', 'alipay', 'stripe'])\n\n/** 支付交易类型 Schema。 */\nexport const PaymentTradeTypeSchema = z.enum(['jsapi', 'h5', 'app', 'native', 'mini_program'])\n\n/** 创建支付订单入参 Schema。 */\nexport const PaymentCreateOrderInputSchema = z.object({\n provider: PaymentProviderSchema,\n amount: z.number().int().min(1),\n description: z.string().min(1),\n tradeType: PaymentTradeTypeSchema,\n userId: z.string().optional(),\n metadata: z.record(z.string(), z.string()).optional(),\n})\n\n/** 创建支付订单业务数据 Schema。 */\nexport const PaymentCreateOrderDataSchema = z.object({\n provider: PaymentProviderSchema,\n tradeType: PaymentTradeTypeSchema,\n clientParams: z.record(z.string(), z.unknown()),\n prepayId: z.string().optional(),\n})\n\n/** 查询支付订单入参 Schema。 */\nexport const PaymentQueryOrderInputSchema = z.object({\n orderNo: z.string().min(1),\n})\n\n/** 支付订单业务数据 Schema。 */\nexport const PaymentOrderSchema = z.object({\n orderNo: z.string(),\n transactionId: z.string().optional(),\n status: z.enum(['pending', 'paid', 'closed', 'refunded', 'failed']),\n amount: z.number(),\n // ISO 8601 时间戳(例如 `2024-01-02T03:04:05.000Z`),由服务端以 `Date#toISOString()` 序列化。\n paidAt: z.iso.datetime().optional(),\n})\n\n/** 退款入参 Schema。 */\nexport const PaymentRefundInputSchema = z.object({\n provider: PaymentProviderSchema,\n orderNo: z.string(),\n refundNo: z.string(),\n amount: z.number().int().min(1),\n reason: z.string().optional(),\n})\n\n/** 退款业务数据 Schema。 */\nexport const PaymentRefundDataSchema = z.object({\n refundNo: z.string(),\n refundId: z.string(),\n status: z.enum(['processing', 'success', 'failed']),\n})\n\n/** 微信/支付宝通知响应 Schema。 */\nexport const PaymentNotifyMessageSchema = z.object({\n code: z.string(),\n message: z.string(),\n})\n\n/** Stripe 通知响应 Schema。 */\nexport const PaymentStripeNotifyDataSchema = z.object({\n received: z.boolean(),\n})\n\nexport const PaymentCreateOrderOutputSchema = haiResultSchema(PaymentCreateOrderDataSchema)\nexport const PaymentQueryOrderOutputSchema = haiResultSchema(PaymentOrderSchema)\nexport const PaymentRefundOutputSchema = haiResultSchema(PaymentRefundDataSchema)\nexport const PaymentNotifyMessageOutputSchema = haiResultSchema(PaymentNotifyMessageSchema)\nexport const PaymentStripeNotifyOutputSchema = haiResultSchema(PaymentStripeNotifyDataSchema)\n\nexport type PaymentCreateOrderInput = z.infer<typeof PaymentCreateOrderInputSchema>\nexport type PaymentCreateOrderOutput = z.infer<typeof PaymentCreateOrderOutputSchema>\nexport type PaymentRefundInput = z.infer<typeof PaymentRefundInputSchema>\n","import { z } from 'zod'\nimport { route } from '../common/route.js'\nimport {\n PaymentCreateOrderInputSchema,\n PaymentCreateOrderOutputSchema,\n PaymentNotifyMessageOutputSchema,\n PaymentQueryOrderInputSchema,\n PaymentQueryOrderOutputSchema,\n PaymentRefundInputSchema,\n PaymentRefundOutputSchema,\n PaymentStripeNotifyOutputSchema,\n} from './payment-schemas.js'\n\n// Webhook 通知体由各支付渠道决定(且通常需要原始 raw body 校验签名),\n// 因此 contract 层只声明为 unknown,由 procedure 实现负责按渠道解析。\nconst WebhookBodySchema = z.unknown()\n\n/** Payment 领域 oRPC contract。 */\nexport const paymentContract = {\n orders: {\n create: route({ method: 'POST', path: '/payment/orders', operationId: 'payment.orders.create', summary: 'Create payment order', tags: ['payment', 'orders'] })\n .input(PaymentCreateOrderInputSchema)\n .output(PaymentCreateOrderOutputSchema),\n get: route({ method: 'GET', path: '/payment/orders/{orderNo}', operationId: 'payment.orders.get', summary: 'Get payment order', tags: ['payment', 'orders'] })\n .input(PaymentQueryOrderInputSchema)\n .output(PaymentQueryOrderOutputSchema),\n refund: route({ method: 'POST', path: '/payment/orders/{orderNo}/refunds', operationId: 'payment.orders.refund', summary: 'Refund payment order', tags: ['payment', 'orders'] })\n .input(PaymentRefundInputSchema)\n .output(PaymentRefundOutputSchema),\n },\n notifications: {\n wechat: route({ method: 'POST', path: '/payment/notifications/wechat', operationId: 'payment.notifications.wechat', summary: 'Handle WeChat payment notification', tags: ['payment', 'notifications'] })\n .input(WebhookBodySchema)\n .output(PaymentNotifyMessageOutputSchema),\n alipay: route({ method: 'POST', path: '/payment/notifications/alipay', operationId: 'payment.notifications.alipay', summary: 'Handle Alipay payment notification', tags: ['payment', 'notifications'] })\n .input(WebhookBodySchema)\n .output(PaymentNotifyMessageOutputSchema),\n stripe: route({ method: 'POST', path: '/payment/notifications/stripe', operationId: 'payment.notifications.stripe', summary: 'Handle Stripe payment notification', tags: ['payment', 'notifications'] })\n .input(WebhookBodySchema)\n .output(PaymentStripeNotifyOutputSchema),\n },\n}\n\nexport type PaymentContract = typeof paymentContract\n"]}