@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.
@@ -0,0 +1,322 @@
1
+ import * as _orpc_contract from '@orpc/contract';
2
+ import * as zod_v4_core from 'zod/v4/core';
3
+ import * as zod from 'zod';
4
+ import { z } from 'zod';
5
+
6
+ /**
7
+ * @h-ai/api-contract — Storage 领域 contract
8
+ *
9
+ * 定义文件存储相关 API 的接口边界:预签名 URL 生成与文件管理。
10
+ * 所有接口均需 Bearer Token 认证(由 `@h-ai/serv` 的 feature 层强制)。
11
+ * @module storage-contract
12
+ */
13
+ /** Storage 领域 oRPC contract。 */
14
+ declare const storageContract: {
15
+ presignedUrls: {
16
+ createDownload: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
17
+ key: zod.ZodString;
18
+ expiresIn: zod.ZodOptional<zod.ZodNumber>;
19
+ }, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
20
+ success: zod.ZodLiteral<true>;
21
+ data: zod.ZodObject<{
22
+ url: zod.ZodString;
23
+ key: zod.ZodString;
24
+ expiresAt: zod.ZodOptional<zod.ZodCoercedDate<unknown>>;
25
+ }, zod_v4_core.$strip>;
26
+ }, zod_v4_core.$strip>, zod.ZodObject<{
27
+ success: zod.ZodLiteral<false>;
28
+ error: zod.ZodObject<{
29
+ code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
30
+ message: zod.ZodString;
31
+ httpStatus: zod.ZodOptional<zod.ZodNumber>;
32
+ system: zod.ZodOptional<zod.ZodString>;
33
+ module: zod.ZodOptional<zod.ZodString>;
34
+ cause: zod.ZodOptional<zod.ZodUnknown>;
35
+ suggestion: zod.ZodOptional<zod.ZodString>;
36
+ ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
37
+ }, zod_v4_core.$strip>;
38
+ }, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
39
+ createUpload: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
40
+ key: zod.ZodString;
41
+ contentType: zod.ZodOptional<zod.ZodString>;
42
+ contentLength: zod.ZodOptional<zod.ZodNumber>;
43
+ expiresIn: zod.ZodOptional<zod.ZodNumber>;
44
+ }, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
45
+ success: zod.ZodLiteral<true>;
46
+ data: zod.ZodObject<{
47
+ url: zod.ZodString;
48
+ key: zod.ZodString;
49
+ expiresAt: zod.ZodOptional<zod.ZodCoercedDate<unknown>>;
50
+ }, zod_v4_core.$strip>;
51
+ }, zod_v4_core.$strip>, zod.ZodObject<{
52
+ success: zod.ZodLiteral<false>;
53
+ error: zod.ZodObject<{
54
+ code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
55
+ message: zod.ZodString;
56
+ httpStatus: zod.ZodOptional<zod.ZodNumber>;
57
+ system: zod.ZodOptional<zod.ZodString>;
58
+ module: zod.ZodOptional<zod.ZodString>;
59
+ cause: zod.ZodOptional<zod.ZodUnknown>;
60
+ suggestion: zod.ZodOptional<zod.ZodString>;
61
+ ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
62
+ }, zod_v4_core.$strip>;
63
+ }, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
64
+ };
65
+ files: {
66
+ list: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
67
+ prefix: zod.ZodOptional<zod.ZodString>;
68
+ maxKeys: zod.ZodOptional<zod.ZodCoercedNumber<unknown>>;
69
+ continuationToken: zod.ZodOptional<zod.ZodString>;
70
+ delimiter: zod.ZodOptional<zod.ZodString>;
71
+ }, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
72
+ success: zod.ZodLiteral<true>;
73
+ data: zod.ZodObject<{
74
+ files: zod.ZodArray<zod.ZodObject<{
75
+ key: zod.ZodString;
76
+ size: zod.ZodNumber;
77
+ contentType: zod.ZodString;
78
+ lastModified: zod.ZodCoercedDate<unknown>;
79
+ etag: zod.ZodOptional<zod.ZodString>;
80
+ metadata: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodString>>;
81
+ }, zod_v4_core.$strip>>;
82
+ commonPrefixes: zod.ZodArray<zod.ZodString>;
83
+ nextContinuationToken: zod.ZodOptional<zod.ZodString>;
84
+ isTruncated: zod.ZodBoolean;
85
+ }, zod_v4_core.$strip>;
86
+ }, zod_v4_core.$strip>, zod.ZodObject<{
87
+ success: zod.ZodLiteral<false>;
88
+ error: zod.ZodObject<{
89
+ code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
90
+ message: zod.ZodString;
91
+ httpStatus: zod.ZodOptional<zod.ZodNumber>;
92
+ system: zod.ZodOptional<zod.ZodString>;
93
+ module: zod.ZodOptional<zod.ZodString>;
94
+ cause: zod.ZodOptional<zod.ZodUnknown>;
95
+ suggestion: zod.ZodOptional<zod.ZodString>;
96
+ ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
97
+ }, zod_v4_core.$strip>;
98
+ }, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
99
+ getMetadata: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
100
+ key: zod.ZodString;
101
+ }, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
102
+ success: zod.ZodLiteral<true>;
103
+ data: zod.ZodObject<{
104
+ key: zod.ZodString;
105
+ size: zod.ZodNumber;
106
+ contentType: zod.ZodString;
107
+ lastModified: zod.ZodCoercedDate<unknown>;
108
+ etag: zod.ZodOptional<zod.ZodString>;
109
+ metadata: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodString>>;
110
+ }, zod_v4_core.$strip>;
111
+ }, zod_v4_core.$strip>, zod.ZodObject<{
112
+ success: zod.ZodLiteral<false>;
113
+ error: zod.ZodObject<{
114
+ code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
115
+ message: zod.ZodString;
116
+ httpStatus: zod.ZodOptional<zod.ZodNumber>;
117
+ system: zod.ZodOptional<zod.ZodString>;
118
+ module: zod.ZodOptional<zod.ZodString>;
119
+ cause: zod.ZodOptional<zod.ZodUnknown>;
120
+ suggestion: zod.ZodOptional<zod.ZodString>;
121
+ ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
122
+ }, zod_v4_core.$strip>;
123
+ }, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
124
+ delete: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
125
+ key: zod.ZodString;
126
+ }, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
127
+ success: zod.ZodLiteral<true>;
128
+ data: zod.ZodVoid;
129
+ }, zod_v4_core.$strip>, zod.ZodObject<{
130
+ success: zod.ZodLiteral<false>;
131
+ error: zod.ZodObject<{
132
+ code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
133
+ message: zod.ZodString;
134
+ httpStatus: zod.ZodOptional<zod.ZodNumber>;
135
+ system: zod.ZodOptional<zod.ZodString>;
136
+ module: zod.ZodOptional<zod.ZodString>;
137
+ cause: zod.ZodOptional<zod.ZodUnknown>;
138
+ suggestion: zod.ZodOptional<zod.ZodString>;
139
+ ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
140
+ }, zod_v4_core.$strip>;
141
+ }, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
142
+ deleteMany: _orpc_contract.ContractProcedureBuilderWithInputOutput<zod.ZodObject<{
143
+ keys: zod.ZodArray<zod.ZodString>;
144
+ }, zod_v4_core.$strip>, zod.ZodDiscriminatedUnion<[zod.ZodObject<{
145
+ success: zod.ZodLiteral<true>;
146
+ data: zod.ZodVoid;
147
+ }, zod_v4_core.$strip>, zod.ZodObject<{
148
+ success: zod.ZodLiteral<false>;
149
+ error: zod.ZodObject<{
150
+ code: zod.ZodUnion<readonly [zod.ZodString, zod.ZodNumber]>;
151
+ message: zod.ZodString;
152
+ httpStatus: zod.ZodOptional<zod.ZodNumber>;
153
+ system: zod.ZodOptional<zod.ZodString>;
154
+ module: zod.ZodOptional<zod.ZodString>;
155
+ cause: zod.ZodOptional<zod.ZodUnknown>;
156
+ suggestion: zod.ZodOptional<zod.ZodString>;
157
+ ext: zod.ZodOptional<zod.ZodRecord<zod.ZodString, zod.ZodUnknown>>;
158
+ }, zod_v4_core.$strip>;
159
+ }, zod_v4_core.$strip>], "success">, Record<never, never>, Record<never, never>>;
160
+ };
161
+ };
162
+ type StorageContract = typeof storageContract;
163
+
164
+ /**
165
+ * @h-ai/api-contract — Storage 领域 Schema
166
+ *
167
+ * 包含文件元数据、预签名 URL、文件列表与删除相关的 input/output Zod Schema。
168
+ * 所有 Output Schema 均用 `haiResultSchema()` 封装。
169
+ * @module storage-schemas
170
+ */
171
+
172
+ /** 文件元数据 Schema。 */
173
+ declare const StorageFileMetadataSchema: z.ZodObject<{
174
+ key: z.ZodString;
175
+ size: z.ZodNumber;
176
+ contentType: z.ZodString;
177
+ lastModified: z.ZodCoercedDate<unknown>;
178
+ etag: z.ZodOptional<z.ZodString>;
179
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
180
+ }, z.core.$strip>;
181
+ /** 获取下载签名 URL 入参 Schema。 */
182
+ declare const StoragePresignDownloadInputSchema: z.ZodObject<{
183
+ key: z.ZodString;
184
+ expiresIn: z.ZodOptional<z.ZodNumber>;
185
+ }, z.core.$strip>;
186
+ /** 获取上传签名 URL 入参 Schema。 */
187
+ declare const StoragePresignUploadInputSchema: z.ZodObject<{
188
+ key: z.ZodString;
189
+ contentType: z.ZodOptional<z.ZodString>;
190
+ contentLength: z.ZodOptional<z.ZodNumber>;
191
+ expiresIn: z.ZodOptional<z.ZodNumber>;
192
+ }, z.core.$strip>;
193
+ /** 签名 URL 业务数据 Schema。 */
194
+ declare const StoragePresignedUrlSchema: z.ZodObject<{
195
+ url: z.ZodString;
196
+ key: z.ZodString;
197
+ expiresAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
198
+ }, z.core.$strip>;
199
+ /** 文件列表查询入参 Schema。 */
200
+ declare const StorageListFilesInputSchema: z.ZodObject<{
201
+ prefix: z.ZodOptional<z.ZodString>;
202
+ maxKeys: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
203
+ continuationToken: z.ZodOptional<z.ZodString>;
204
+ delimiter: z.ZodOptional<z.ZodString>;
205
+ }, z.core.$strip>;
206
+ /** 文件列表业务数据 Schema。 */
207
+ declare const StorageListFilesDataSchema: z.ZodObject<{
208
+ files: z.ZodArray<z.ZodObject<{
209
+ key: z.ZodString;
210
+ size: z.ZodNumber;
211
+ contentType: z.ZodString;
212
+ lastModified: z.ZodCoercedDate<unknown>;
213
+ etag: z.ZodOptional<z.ZodString>;
214
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
215
+ }, z.core.$strip>>;
216
+ commonPrefixes: z.ZodArray<z.ZodString>;
217
+ nextContinuationToken: z.ZodOptional<z.ZodString>;
218
+ isTruncated: z.ZodBoolean;
219
+ }, z.core.$strip>;
220
+ /** 单文件操作入参 Schema。 */
221
+ declare const StorageFileKeyInputSchema: z.ZodObject<{
222
+ key: z.ZodString;
223
+ }, z.core.$strip>;
224
+ /** 批量删除文件入参 Schema。 */
225
+ declare const StorageDeleteFilesInputSchema: z.ZodObject<{
226
+ keys: z.ZodArray<z.ZodString>;
227
+ }, 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
+ type StoragePresignDownloadInput = z.infer<typeof StoragePresignDownloadInputSchema>;
316
+ type StoragePresignUploadInput = z.infer<typeof StoragePresignUploadInputSchema>;
317
+ type StoragePresignedUrlOutput = z.infer<typeof StoragePresignedUrlOutputSchema>;
318
+ type StorageListFilesInput = z.infer<typeof StorageListFilesInputSchema>;
319
+ type StorageFileKeyInput = z.infer<typeof StorageFileKeyInputSchema>;
320
+ type StorageDeleteFilesInput = z.infer<typeof StorageDeleteFilesInputSchema>;
321
+
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 };
@@ -0,0 +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';
3
+ //# sourceMappingURL=index.js.map
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
package/package.json ADDED
@@ -0,0 +1,60 @@
1
+ {
2
+ "name": "@h-ai/api-contract",
3
+ "type": "module",
4
+ "version": "0.1.0-alpha.15",
5
+ "description": "Hai Framework public API contracts powered by oRPC and Zod.",
6
+ "license": "Apache-2.0",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ },
13
+ "./iam": {
14
+ "types": "./dist/iam/index.d.ts",
15
+ "import": "./dist/iam/index.js"
16
+ },
17
+ "./storage": {
18
+ "types": "./dist/storage/index.d.ts",
19
+ "import": "./dist/storage/index.js"
20
+ },
21
+ "./ai": {
22
+ "types": "./dist/ai/index.d.ts",
23
+ "import": "./dist/ai/index.js"
24
+ },
25
+ "./payment": {
26
+ "types": "./dist/payment/index.d.ts",
27
+ "import": "./dist/payment/index.js"
28
+ }
29
+ },
30
+ "main": "./dist/index.js",
31
+ "types": "./dist/index.d.ts",
32
+ "files": [
33
+ "dist"
34
+ ],
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "dependencies": {
39
+ "@orpc/contract": "^1.14.3",
40
+ "zod": "^4.3.6",
41
+ "@h-ai/core": "0.1.0-alpha.15"
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^25.1.0",
45
+ "rimraf": "^6.0.1",
46
+ "tsup": "^8.3.5",
47
+ "typescript": "^6.0.2",
48
+ "vitest": "^4.0.18"
49
+ },
50
+ "scripts": {
51
+ "build": "tsup",
52
+ "dev": "tsup --watch",
53
+ "test": "vitest run",
54
+ "test:watch": "vitest watch",
55
+ "typecheck": "tsc --noEmit",
56
+ "lint": "eslint .",
57
+ "lint:fix": "eslint . --fix",
58
+ "clean": "rimraf dist .turbo"
59
+ }
60
+ }