@h-ai/api-contract 0.1.0-alpha.15
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/LICENSE +202 -0
- package/README.md +102 -0
- package/dist/ai/index.d.ts +1129 -0
- package/dist/ai/index.js +4 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/chunk-3GZQUVY3.js +32 -0
- package/dist/chunk-3GZQUVY3.js.map +1 -0
- package/dist/chunk-DKBPLQMI.js +66 -0
- package/dist/chunk-DKBPLQMI.js.map +1 -0
- package/dist/chunk-HJMSMLTZ.js +71 -0
- package/dist/chunk-HJMSMLTZ.js.map +1 -0
- package/dist/chunk-HPKGSAHN.js +196 -0
- package/dist/chunk-HPKGSAHN.js.map +1 -0
- package/dist/chunk-ZK43WHUQ.js +229 -0
- package/dist/chunk-ZK43WHUQ.js.map +1 -0
- package/dist/iam/index.d.ts +1414 -0
- package/dist/iam/index.js +4 -0
- package/dist/iam/index.js.map +1 -0
- package/dist/index.d.ts +1636 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/payment/index.d.ts +404 -0
- package/dist/payment/index.js +4 -0
- package/dist/payment/index.js.map +1 -0
- package/dist/storage/index.d.ts +322 -0
- package/dist/storage/index.js +4 -0
- package/dist/storage/index.js.map +1 -0
- package/package.json +60 -0
package/dist/ai/index.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { 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, aiContract } from '../chunk-HPKGSAHN.js';
|
|
2
|
+
import '../chunk-3GZQUVY3.js';
|
|
3
|
+
//# sourceMappingURL=index.js.map
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { oc } from '@orpc/contract';
|
|
3
|
+
|
|
4
|
+
// src/common/result-schemas.ts
|
|
5
|
+
var HaiErrorSchema = z.object({
|
|
6
|
+
code: z.union([z.string(), z.number()]),
|
|
7
|
+
message: z.string(),
|
|
8
|
+
httpStatus: z.number().optional(),
|
|
9
|
+
system: z.string().optional(),
|
|
10
|
+
module: z.string().optional(),
|
|
11
|
+
cause: z.unknown().optional(),
|
|
12
|
+
suggestion: z.string().optional(),
|
|
13
|
+
ext: z.record(z.string(), z.unknown()).optional()
|
|
14
|
+
});
|
|
15
|
+
function haiResultSchema(dataSchema) {
|
|
16
|
+
return z.discriminatedUnion("success", [
|
|
17
|
+
z.object({
|
|
18
|
+
success: z.literal(true),
|
|
19
|
+
data: dataSchema
|
|
20
|
+
}),
|
|
21
|
+
z.object({
|
|
22
|
+
success: z.literal(false),
|
|
23
|
+
error: HaiErrorSchema
|
|
24
|
+
})
|
|
25
|
+
]);
|
|
26
|
+
}
|
|
27
|
+
var HaiVoidResultSchema = haiResultSchema(z.void());
|
|
28
|
+
var route = (...args) => oc.route(...args);
|
|
29
|
+
|
|
30
|
+
export { HaiErrorSchema, HaiVoidResultSchema, haiResultSchema, route };
|
|
31
|
+
//# sourceMappingURL=chunk-3GZQUVY3.js.map
|
|
32
|
+
//# sourceMappingURL=chunk-3GZQUVY3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { haiResultSchema, route } from './chunk-3GZQUVY3.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
var StorageFileMetadataSchema = z.object({
|
|
5
|
+
key: z.string(),
|
|
6
|
+
size: z.number(),
|
|
7
|
+
contentType: z.string(),
|
|
8
|
+
lastModified: z.coerce.date(),
|
|
9
|
+
etag: z.string().optional(),
|
|
10
|
+
metadata: z.record(z.string(), z.string()).optional()
|
|
11
|
+
});
|
|
12
|
+
var StoragePresignDownloadInputSchema = z.object({
|
|
13
|
+
key: z.string().min(1),
|
|
14
|
+
expiresIn: z.number().int().min(1).optional()
|
|
15
|
+
});
|
|
16
|
+
var StoragePresignUploadInputSchema = z.object({
|
|
17
|
+
key: z.string().min(1),
|
|
18
|
+
contentType: z.string().optional(),
|
|
19
|
+
contentLength: z.number().int().min(1).optional(),
|
|
20
|
+
expiresIn: z.number().int().min(1).optional()
|
|
21
|
+
});
|
|
22
|
+
var StoragePresignedUrlSchema = z.object({
|
|
23
|
+
url: z.string(),
|
|
24
|
+
key: z.string(),
|
|
25
|
+
expiresAt: z.coerce.date().optional()
|
|
26
|
+
});
|
|
27
|
+
var StorageListFilesInputSchema = z.object({
|
|
28
|
+
prefix: z.string().optional(),
|
|
29
|
+
maxKeys: z.coerce.number().int().min(1).max(1e3).optional(),
|
|
30
|
+
continuationToken: z.string().optional(),
|
|
31
|
+
delimiter: z.string().optional()
|
|
32
|
+
});
|
|
33
|
+
var StorageListFilesDataSchema = z.object({
|
|
34
|
+
files: z.array(StorageFileMetadataSchema),
|
|
35
|
+
commonPrefixes: z.array(z.string()),
|
|
36
|
+
nextContinuationToken: z.string().optional(),
|
|
37
|
+
isTruncated: z.boolean()
|
|
38
|
+
});
|
|
39
|
+
var StorageFileKeyInputSchema = z.object({
|
|
40
|
+
key: z.string().min(1)
|
|
41
|
+
});
|
|
42
|
+
var StorageDeleteFilesInputSchema = z.object({
|
|
43
|
+
keys: z.array(z.string().min(1)).min(1)
|
|
44
|
+
});
|
|
45
|
+
var StoragePresignedUrlOutputSchema = haiResultSchema(StoragePresignedUrlSchema);
|
|
46
|
+
var StorageFileMetadataOutputSchema = haiResultSchema(StorageFileMetadataSchema);
|
|
47
|
+
var StorageListFilesOutputSchema = haiResultSchema(StorageListFilesDataSchema);
|
|
48
|
+
var StorageVoidOutputSchema = haiResultSchema(z.void());
|
|
49
|
+
|
|
50
|
+
// src/storage/storage-contract.ts
|
|
51
|
+
var storageContract = {
|
|
52
|
+
presignedUrls: {
|
|
53
|
+
createDownload: route({ method: "POST", path: "/storage/presigned-urls/download", operationId: "storage.presignedUrls.createDownload", summary: "Create presigned download URL", tags: ["storage"] }).input(StoragePresignDownloadInputSchema).output(StoragePresignedUrlOutputSchema),
|
|
54
|
+
createUpload: route({ method: "POST", path: "/storage/presigned-urls/upload", operationId: "storage.presignedUrls.createUpload", summary: "Create presigned upload URL", tags: ["storage"] }).input(StoragePresignUploadInputSchema).output(StoragePresignedUrlOutputSchema)
|
|
55
|
+
},
|
|
56
|
+
files: {
|
|
57
|
+
list: route({ method: "GET", path: "/storage/files", operationId: "storage.files.list", summary: "List files", tags: ["storage"] }).input(StorageListFilesInputSchema).output(StorageListFilesOutputSchema),
|
|
58
|
+
getMetadata: route({ method: "POST", path: "/storage/files/metadata", operationId: "storage.files.getMetadata", summary: "Get file metadata", tags: ["storage"] }).input(StorageFileKeyInputSchema).output(StorageFileMetadataOutputSchema),
|
|
59
|
+
delete: route({ method: "DELETE", path: "/storage/files", operationId: "storage.files.delete", summary: "Delete file", tags: ["storage"] }).input(StorageFileKeyInputSchema).output(StorageVoidOutputSchema),
|
|
60
|
+
deleteMany: route({ method: "POST", path: "/storage/files/delete-many", operationId: "storage.files.deleteMany", summary: "Delete files", tags: ["storage"] }).input(StorageDeleteFilesInputSchema).output(StorageVoidOutputSchema)
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
export { StorageDeleteFilesInputSchema, StorageFileKeyInputSchema, StorageFileMetadataOutputSchema, StorageFileMetadataSchema, StorageListFilesDataSchema, StorageListFilesInputSchema, StorageListFilesOutputSchema, StoragePresignDownloadInputSchema, StoragePresignUploadInputSchema, StoragePresignedUrlOutputSchema, StoragePresignedUrlSchema, StorageVoidOutputSchema, storageContract };
|
|
65
|
+
//# sourceMappingURL=chunk-DKBPLQMI.js.map
|
|
66
|
+
//# sourceMappingURL=chunk-DKBPLQMI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { haiResultSchema, route } from './chunk-3GZQUVY3.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
var PaymentProviderSchema = z.enum(["wechat", "alipay", "stripe"]);
|
|
5
|
+
var PaymentTradeTypeSchema = z.enum(["jsapi", "h5", "app", "native", "mini_program"]);
|
|
6
|
+
var PaymentCreateOrderInputSchema = z.object({
|
|
7
|
+
provider: PaymentProviderSchema,
|
|
8
|
+
amount: z.number().int().min(1),
|
|
9
|
+
description: z.string().min(1),
|
|
10
|
+
tradeType: PaymentTradeTypeSchema,
|
|
11
|
+
userId: z.string().optional(),
|
|
12
|
+
metadata: z.record(z.string(), z.string()).optional()
|
|
13
|
+
});
|
|
14
|
+
var PaymentCreateOrderDataSchema = z.object({
|
|
15
|
+
provider: PaymentProviderSchema,
|
|
16
|
+
tradeType: PaymentTradeTypeSchema,
|
|
17
|
+
clientParams: z.record(z.string(), z.unknown()),
|
|
18
|
+
prepayId: z.string().optional()
|
|
19
|
+
});
|
|
20
|
+
var PaymentQueryOrderInputSchema = z.object({
|
|
21
|
+
orderNo: z.string().min(1)
|
|
22
|
+
});
|
|
23
|
+
var PaymentOrderSchema = z.object({
|
|
24
|
+
orderNo: z.string(),
|
|
25
|
+
transactionId: z.string().optional(),
|
|
26
|
+
status: z.enum(["pending", "paid", "closed", "refunded", "failed"]),
|
|
27
|
+
amount: z.number(),
|
|
28
|
+
// ISO 8601 时间戳(例如 `2024-01-02T03:04:05.000Z`),由服务端以 `Date#toISOString()` 序列化。
|
|
29
|
+
paidAt: z.iso.datetime().optional()
|
|
30
|
+
});
|
|
31
|
+
var PaymentRefundInputSchema = z.object({
|
|
32
|
+
provider: PaymentProviderSchema,
|
|
33
|
+
orderNo: z.string(),
|
|
34
|
+
refundNo: z.string(),
|
|
35
|
+
amount: z.number().int().min(1),
|
|
36
|
+
reason: z.string().optional()
|
|
37
|
+
});
|
|
38
|
+
var PaymentRefundDataSchema = z.object({
|
|
39
|
+
refundNo: z.string(),
|
|
40
|
+
refundId: z.string(),
|
|
41
|
+
status: z.enum(["processing", "success", "failed"])
|
|
42
|
+
});
|
|
43
|
+
var PaymentNotifyMessageSchema = z.object({
|
|
44
|
+
code: z.string(),
|
|
45
|
+
message: z.string()
|
|
46
|
+
});
|
|
47
|
+
var PaymentStripeNotifyDataSchema = z.object({
|
|
48
|
+
received: z.boolean()
|
|
49
|
+
});
|
|
50
|
+
var PaymentCreateOrderOutputSchema = haiResultSchema(PaymentCreateOrderDataSchema);
|
|
51
|
+
var PaymentQueryOrderOutputSchema = haiResultSchema(PaymentOrderSchema);
|
|
52
|
+
var PaymentRefundOutputSchema = haiResultSchema(PaymentRefundDataSchema);
|
|
53
|
+
var PaymentNotifyMessageOutputSchema = haiResultSchema(PaymentNotifyMessageSchema);
|
|
54
|
+
var PaymentStripeNotifyOutputSchema = haiResultSchema(PaymentStripeNotifyDataSchema);
|
|
55
|
+
var WebhookBodySchema = z.unknown();
|
|
56
|
+
var paymentContract = {
|
|
57
|
+
orders: {
|
|
58
|
+
create: route({ method: "POST", path: "/payment/orders", operationId: "payment.orders.create", summary: "Create payment order", tags: ["payment", "orders"] }).input(PaymentCreateOrderInputSchema).output(PaymentCreateOrderOutputSchema),
|
|
59
|
+
get: route({ method: "GET", path: "/payment/orders/{orderNo}", operationId: "payment.orders.get", summary: "Get payment order", tags: ["payment", "orders"] }).input(PaymentQueryOrderInputSchema).output(PaymentQueryOrderOutputSchema),
|
|
60
|
+
refund: route({ method: "POST", path: "/payment/orders/{orderNo}/refunds", operationId: "payment.orders.refund", summary: "Refund payment order", tags: ["payment", "orders"] }).input(PaymentRefundInputSchema).output(PaymentRefundOutputSchema)
|
|
61
|
+
},
|
|
62
|
+
notifications: {
|
|
63
|
+
wechat: route({ method: "POST", path: "/payment/notifications/wechat", operationId: "payment.notifications.wechat", summary: "Handle WeChat payment notification", tags: ["payment", "notifications"] }).input(WebhookBodySchema).output(PaymentNotifyMessageOutputSchema),
|
|
64
|
+
alipay: route({ method: "POST", path: "/payment/notifications/alipay", operationId: "payment.notifications.alipay", summary: "Handle Alipay payment notification", tags: ["payment", "notifications"] }).input(WebhookBodySchema).output(PaymentNotifyMessageOutputSchema),
|
|
65
|
+
stripe: route({ method: "POST", path: "/payment/notifications/stripe", operationId: "payment.notifications.stripe", summary: "Handle Stripe payment notification", tags: ["payment", "notifications"] }).input(WebhookBodySchema).output(PaymentStripeNotifyOutputSchema)
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export { PaymentCreateOrderDataSchema, PaymentCreateOrderInputSchema, PaymentCreateOrderOutputSchema, PaymentNotifyMessageOutputSchema, PaymentNotifyMessageSchema, PaymentOrderSchema, PaymentProviderSchema, PaymentQueryOrderInputSchema, PaymentQueryOrderOutputSchema, PaymentRefundDataSchema, PaymentRefundInputSchema, PaymentRefundOutputSchema, PaymentStripeNotifyDataSchema, PaymentStripeNotifyOutputSchema, PaymentTradeTypeSchema, paymentContract };
|
|
70
|
+
//# sourceMappingURL=chunk-HJMSMLTZ.js.map
|
|
71
|
+
//# sourceMappingURL=chunk-HJMSMLTZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/payment/payment-schemas.ts","../src/payment/payment-contract.ts"],"names":["z"],"mappings":"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","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"]}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { haiResultSchema, route } from './chunk-3GZQUVY3.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
var AiMessageRoleSchema = z.enum(["system", "user", "assistant", "tool"]);
|
|
5
|
+
var AiTextContentSchema = z.object({
|
|
6
|
+
type: z.literal("text"),
|
|
7
|
+
text: z.string()
|
|
8
|
+
});
|
|
9
|
+
var AiImageContentSchema = z.object({
|
|
10
|
+
type: z.literal("image_url"),
|
|
11
|
+
image_url: z.object({
|
|
12
|
+
url: z.string(),
|
|
13
|
+
detail: z.enum(["auto", "low", "high"]).optional()
|
|
14
|
+
})
|
|
15
|
+
});
|
|
16
|
+
var AiMessageContentSchema = z.union([
|
|
17
|
+
z.string(),
|
|
18
|
+
z.array(z.union([AiTextContentSchema, AiImageContentSchema]))
|
|
19
|
+
]);
|
|
20
|
+
var AiToolCallSchema = z.object({
|
|
21
|
+
id: z.string(),
|
|
22
|
+
type: z.literal("function"),
|
|
23
|
+
function: z.object({
|
|
24
|
+
name: z.string(),
|
|
25
|
+
arguments: z.string()
|
|
26
|
+
})
|
|
27
|
+
});
|
|
28
|
+
var AiChatMessageSchema = z.object({
|
|
29
|
+
role: AiMessageRoleSchema,
|
|
30
|
+
content: AiMessageContentSchema.optional(),
|
|
31
|
+
name: z.string().optional(),
|
|
32
|
+
tool_calls: z.array(AiToolCallSchema).optional(),
|
|
33
|
+
tool_call_id: z.string().optional()
|
|
34
|
+
});
|
|
35
|
+
var AiToolParameterSchema = z.object({
|
|
36
|
+
type: z.string(),
|
|
37
|
+
description: z.string().optional(),
|
|
38
|
+
enum: z.array(z.string()).optional()
|
|
39
|
+
});
|
|
40
|
+
var AiToolDefinitionSchema = z.object({
|
|
41
|
+
type: z.literal("function"),
|
|
42
|
+
function: z.object({
|
|
43
|
+
name: z.string(),
|
|
44
|
+
description: z.string().optional(),
|
|
45
|
+
parameters: z.object({
|
|
46
|
+
type: z.literal("object"),
|
|
47
|
+
properties: z.record(z.string(), AiToolParameterSchema).optional(),
|
|
48
|
+
required: z.array(z.string()).optional()
|
|
49
|
+
}).optional()
|
|
50
|
+
})
|
|
51
|
+
});
|
|
52
|
+
var AiChatCompletionInputSchema = z.object({
|
|
53
|
+
model: z.string().optional(),
|
|
54
|
+
messages: z.array(AiChatMessageSchema).min(1),
|
|
55
|
+
temperature: z.number().min(0).max(2).optional(),
|
|
56
|
+
top_p: z.number().min(0).max(1).optional(),
|
|
57
|
+
max_tokens: z.number().int().min(1).optional(),
|
|
58
|
+
stream: z.boolean().optional(),
|
|
59
|
+
tools: z.array(AiToolDefinitionSchema).optional(),
|
|
60
|
+
tool_choice: z.union([
|
|
61
|
+
z.literal("auto"),
|
|
62
|
+
z.literal("none"),
|
|
63
|
+
z.object({ type: z.literal("function"), function: z.object({ name: z.string() }) })
|
|
64
|
+
]).optional()
|
|
65
|
+
});
|
|
66
|
+
var AiTokenUsageSchema = z.object({
|
|
67
|
+
prompt_tokens: z.number(),
|
|
68
|
+
completion_tokens: z.number(),
|
|
69
|
+
total_tokens: z.number()
|
|
70
|
+
});
|
|
71
|
+
var AiAssistantMessageSchema = z.object({
|
|
72
|
+
role: z.literal("assistant"),
|
|
73
|
+
content: z.string().nullable().optional(),
|
|
74
|
+
tool_calls: z.array(AiToolCallSchema).optional()
|
|
75
|
+
});
|
|
76
|
+
var AiChatCompletionChoiceSchema = z.object({
|
|
77
|
+
index: z.number(),
|
|
78
|
+
message: AiAssistantMessageSchema,
|
|
79
|
+
finish_reason: z.enum(["stop", "length", "tool_calls", "content_filter"])
|
|
80
|
+
});
|
|
81
|
+
var AiChatCompletionDataSchema = z.object({
|
|
82
|
+
id: z.string(),
|
|
83
|
+
object: z.literal("chat.completion"),
|
|
84
|
+
created: z.number(),
|
|
85
|
+
model: z.string(),
|
|
86
|
+
choices: z.array(AiChatCompletionChoiceSchema),
|
|
87
|
+
usage: AiTokenUsageSchema
|
|
88
|
+
});
|
|
89
|
+
var AiSendMessageInputSchema = z.object({
|
|
90
|
+
message: z.string().min(1),
|
|
91
|
+
systemPrompt: z.string().optional(),
|
|
92
|
+
model: z.string().optional(),
|
|
93
|
+
temperature: z.number().min(0).max(2).optional()
|
|
94
|
+
});
|
|
95
|
+
var AiSendMessageDataSchema = z.object({
|
|
96
|
+
content: z.string(),
|
|
97
|
+
model: z.string(),
|
|
98
|
+
usage: AiTokenUsageSchema.optional()
|
|
99
|
+
});
|
|
100
|
+
var AiMemoryTypeSchema = z.enum(["fact", "preference", "event", "entity", "instruction"]);
|
|
101
|
+
var AiMemoryEntrySchema = z.object({
|
|
102
|
+
id: z.string(),
|
|
103
|
+
content: z.string(),
|
|
104
|
+
type: AiMemoryTypeSchema,
|
|
105
|
+
importance: z.number(),
|
|
106
|
+
objectId: z.string().optional(),
|
|
107
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
108
|
+
createdAt: z.number(),
|
|
109
|
+
lastAccessedAt: z.number(),
|
|
110
|
+
accessCount: z.number()
|
|
111
|
+
});
|
|
112
|
+
var AiMemoryRecallInputSchema = z.object({
|
|
113
|
+
query: z.string().min(1),
|
|
114
|
+
topK: z.number().int().min(1).optional(),
|
|
115
|
+
types: z.array(AiMemoryTypeSchema).optional(),
|
|
116
|
+
minImportance: z.number().min(0).max(1).optional(),
|
|
117
|
+
objectId: z.string().optional()
|
|
118
|
+
});
|
|
119
|
+
var AiMemoryRecallDataSchema = z.object({
|
|
120
|
+
items: z.array(AiMemoryEntrySchema)
|
|
121
|
+
});
|
|
122
|
+
var AiMemoryListInputSchema = z.object({
|
|
123
|
+
types: z.array(AiMemoryTypeSchema).optional(),
|
|
124
|
+
objectId: z.string().optional(),
|
|
125
|
+
offset: z.number().int().min(0).optional(),
|
|
126
|
+
limit: z.number().int().min(1).max(100).optional()
|
|
127
|
+
});
|
|
128
|
+
var AiMemoryListDataSchema = z.object({
|
|
129
|
+
items: z.array(AiMemoryEntrySchema),
|
|
130
|
+
total: z.number()
|
|
131
|
+
});
|
|
132
|
+
var AiSessionInfoSchema = z.object({
|
|
133
|
+
objectId: z.string(),
|
|
134
|
+
sessionId: z.string(),
|
|
135
|
+
createdAt: z.number(),
|
|
136
|
+
updatedAt: z.number(),
|
|
137
|
+
metadata: z.record(z.string(), z.unknown()).optional()
|
|
138
|
+
});
|
|
139
|
+
var AiSessionListInputSchema = z.object({
|
|
140
|
+
objectId: z.string().min(1)
|
|
141
|
+
});
|
|
142
|
+
var AiSessionListDataSchema = z.object({
|
|
143
|
+
items: z.array(AiSessionInfoSchema)
|
|
144
|
+
});
|
|
145
|
+
var AiChatRecordSchema = z.object({
|
|
146
|
+
id: z.string(),
|
|
147
|
+
objectId: z.string(),
|
|
148
|
+
sessionId: z.string(),
|
|
149
|
+
request: z.object({
|
|
150
|
+
model: z.string(),
|
|
151
|
+
messages: z.array(AiChatMessageSchema)
|
|
152
|
+
}),
|
|
153
|
+
response: z.object({
|
|
154
|
+
content: z.string(),
|
|
155
|
+
toolCalls: z.array(AiToolCallSchema).optional(),
|
|
156
|
+
finishReason: z.string(),
|
|
157
|
+
usage: AiTokenUsageSchema
|
|
158
|
+
}),
|
|
159
|
+
createdAt: z.number(),
|
|
160
|
+
duration: z.number()
|
|
161
|
+
});
|
|
162
|
+
var AiChatHistoryInputSchema = z.object({
|
|
163
|
+
objectId: z.string().min(1),
|
|
164
|
+
sessionId: z.string().min(1),
|
|
165
|
+
limit: z.number().int().min(1).max(200).optional(),
|
|
166
|
+
order: z.enum(["asc", "desc"]).optional()
|
|
167
|
+
});
|
|
168
|
+
var AiChatHistoryDataSchema = z.object({
|
|
169
|
+
items: z.array(AiChatRecordSchema)
|
|
170
|
+
});
|
|
171
|
+
var AiChatCompletionOutputSchema = haiResultSchema(AiChatCompletionDataSchema);
|
|
172
|
+
var AiSendMessageOutputSchema = haiResultSchema(AiSendMessageDataSchema);
|
|
173
|
+
var AiMemoryRecallOutputSchema = haiResultSchema(AiMemoryRecallDataSchema);
|
|
174
|
+
var AiMemoryListOutputSchema = haiResultSchema(AiMemoryListDataSchema);
|
|
175
|
+
var AiSessionListOutputSchema = haiResultSchema(AiSessionListDataSchema);
|
|
176
|
+
var AiChatHistoryOutputSchema = haiResultSchema(AiChatHistoryDataSchema);
|
|
177
|
+
|
|
178
|
+
// src/ai/ai-contract.ts
|
|
179
|
+
var aiContract = {
|
|
180
|
+
chats: {
|
|
181
|
+
createCompletion: route({ method: "POST", path: "/ai/chats/completions", operationId: "ai.chats.createCompletion", summary: "Create chat completion", tags: ["ai", "chats"] }).input(AiChatCompletionInputSchema).output(AiChatCompletionOutputSchema),
|
|
182
|
+
sendMessage: route({ method: "POST", path: "/ai/chats/messages", operationId: "ai.chats.sendMessage", summary: "Send a single chat message", tags: ["ai", "chats"] }).input(AiSendMessageInputSchema).output(AiSendMessageOutputSchema),
|
|
183
|
+
listHistory: route({ method: "POST", path: "/ai/chats/history", operationId: "ai.chats.listHistory", summary: "List chat history", tags: ["ai", "chats"] }).input(AiChatHistoryInputSchema).output(AiChatHistoryOutputSchema)
|
|
184
|
+
},
|
|
185
|
+
memories: {
|
|
186
|
+
recall: route({ method: "POST", path: "/ai/memories/recall", operationId: "ai.memories.recall", summary: "Recall relevant memories", tags: ["ai", "memories"] }).input(AiMemoryRecallInputSchema).output(AiMemoryRecallOutputSchema),
|
|
187
|
+
list: route({ method: "POST", path: "/ai/memories/list", operationId: "ai.memories.list", summary: "List memories", tags: ["ai", "memories"] }).input(AiMemoryListInputSchema).output(AiMemoryListOutputSchema)
|
|
188
|
+
},
|
|
189
|
+
sessions: {
|
|
190
|
+
list: route({ method: "POST", path: "/ai/sessions/list", operationId: "ai.sessions.list", summary: "List sessions", tags: ["ai", "sessions"] }).input(AiSessionListInputSchema).output(AiSessionListOutputSchema)
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
export { 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, aiContract };
|
|
195
|
+
//# sourceMappingURL=chunk-HPKGSAHN.js.map
|
|
196
|
+
//# sourceMappingURL=chunk-HPKGSAHN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ai/ai-schemas.ts","../src/ai/ai-contract.ts"],"names":[],"mappings":"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","file":"chunk-HPKGSAHN.js","sourcesContent":["/**\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"]}
|