@downcity/city 0.2.93 → 0.2.100

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.
Files changed (35) hide show
  1. package/bin/index.d.ts +4 -2
  2. package/bin/index.d.ts.map +1 -1
  3. package/bin/index.js +2 -1
  4. package/bin/index.js.map +1 -1
  5. package/bin/service/ai/ai-service.d.ts +13 -9
  6. package/bin/service/ai/ai-service.d.ts.map +1 -1
  7. package/bin/service/ai/ai-service.js +113 -278
  8. package/bin/service/ai/ai-service.js.map +1 -1
  9. package/bin/service/ai/charge.d.ts +7 -0
  10. package/bin/service/ai/charge.d.ts.map +1 -1
  11. package/bin/service/ai/helpers.d.ts +0 -5
  12. package/bin/service/ai/helpers.d.ts.map +1 -1
  13. package/bin/service/ai/helpers.js +0 -9
  14. package/bin/service/ai/helpers.js.map +1 -1
  15. package/bin/service/ai/job-types.d.ts +41 -66
  16. package/bin/service/ai/job-types.d.ts.map +1 -1
  17. package/bin/service/ai/job-types.js +4 -3
  18. package/bin/service/ai/job-types.js.map +1 -1
  19. package/bin/service/ai/provider.d.ts +14 -7
  20. package/bin/service/ai/provider.d.ts.map +1 -1
  21. package/bin/service/ai/provider.js +3 -2
  22. package/bin/service/ai/provider.js.map +1 -1
  23. package/bin/service/ai/types.d.ts +8 -5
  24. package/bin/service/ai/types.d.ts.map +1 -1
  25. package/bin/service/{ai → async-job}/schema.d.ts +139 -31
  26. package/bin/service/async-job/schema.d.ts.map +1 -0
  27. package/bin/service/{ai → async-job}/schema.js +26 -14
  28. package/bin/service/async-job/schema.js.map +1 -0
  29. package/bin/types/AsyncJob.d.ts +42 -0
  30. package/bin/types/AsyncJob.d.ts.map +1 -0
  31. package/bin/types/AsyncJob.js +8 -0
  32. package/bin/types/AsyncJob.js.map +1 -0
  33. package/package.json +1 -1
  34. package/bin/service/ai/schema.d.ts.map +0 -1
  35. package/bin/service/ai/schema.js.map +0 -1
@@ -1,19 +1,19 @@
1
1
  /**
2
- * AI Service 数据库 schema 模块。
2
+ * 通用异步任务数据库 schema 模块。
3
3
  *
4
- * 这里定义 AIService 自己持久化使用的表。当前主要用于图片生成任务,
5
- * 让 Worker 可以把长耗时生成从前台 HTTP 请求中拆出来。
4
+ * async_jobs City 的统一异步任务表,用于图片生成、视频生成、
5
+ * 文件处理等需要跨请求恢复或轮询的任务。
6
6
  */
7
7
  /**
8
- * 默认 SQLite 图片任务表。
8
+ * 默认 SQLite 异步任务表。
9
9
  */
10
- export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
11
- name: "ai_image_jobs";
10
+ export declare const sqliteAsyncJobs: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
11
+ name: "async_jobs";
12
12
  schema: undefined;
13
13
  columns: {
14
14
  job_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
15
15
  name: "job_id";
16
- tableName: "ai_image_jobs";
16
+ tableName: "async_jobs";
17
17
  dataType: "string";
18
18
  columnType: "SQLiteText";
19
19
  data: string;
@@ -30,9 +30,28 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
30
30
  }, {}, {
31
31
  length: number | undefined;
32
32
  }>;
33
+ job_type: import("drizzle-orm/sqlite-core").SQLiteColumn<{
34
+ name: "job_type";
35
+ tableName: "async_jobs";
36
+ dataType: "string";
37
+ columnType: "SQLiteText";
38
+ data: string;
39
+ driverParam: string;
40
+ notNull: true;
41
+ hasDefault: false;
42
+ isPrimaryKey: false;
43
+ isAutoincrement: false;
44
+ hasRuntimeDefault: false;
45
+ enumValues: [string, ...string[]];
46
+ baseColumn: never;
47
+ identity: undefined;
48
+ generated: undefined;
49
+ }, {}, {
50
+ length: number | undefined;
51
+ }>;
33
52
  status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
34
53
  name: "status";
35
- tableName: "ai_image_jobs";
54
+ tableName: "async_jobs";
36
55
  dataType: "string";
37
56
  columnType: "SQLiteText";
38
57
  data: string;
@@ -51,7 +70,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
51
70
  }>;
52
71
  input_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
53
72
  name: "input_json";
54
- tableName: "ai_image_jobs";
73
+ tableName: "async_jobs";
55
74
  dataType: "string";
56
75
  columnType: "SQLiteText";
57
76
  data: string;
@@ -68,9 +87,28 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
68
87
  }, {}, {
69
88
  length: number | undefined;
70
89
  }>;
90
+ state_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
91
+ name: "state_json";
92
+ tableName: "async_jobs";
93
+ dataType: "string";
94
+ columnType: "SQLiteText";
95
+ data: string;
96
+ driverParam: string;
97
+ notNull: false;
98
+ hasDefault: false;
99
+ isPrimaryKey: false;
100
+ isAutoincrement: false;
101
+ hasRuntimeDefault: false;
102
+ enumValues: [string, ...string[]];
103
+ baseColumn: never;
104
+ identity: undefined;
105
+ generated: undefined;
106
+ }, {}, {
107
+ length: number | undefined;
108
+ }>;
71
109
  result_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
72
110
  name: "result_json";
73
- tableName: "ai_image_jobs";
111
+ tableName: "async_jobs";
74
112
  dataType: "string";
75
113
  columnType: "SQLiteText";
76
114
  data: string;
@@ -89,7 +127,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
89
127
  }>;
90
128
  error: import("drizzle-orm/sqlite-core").SQLiteColumn<{
91
129
  name: "error";
92
- tableName: "ai_image_jobs";
130
+ tableName: "async_jobs";
93
131
  dataType: "string";
94
132
  columnType: "SQLiteText";
95
133
  data: string;
@@ -108,7 +146,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
108
146
  }>;
109
147
  message: import("drizzle-orm/sqlite-core").SQLiteColumn<{
110
148
  name: "message";
111
- tableName: "ai_image_jobs";
149
+ tableName: "async_jobs";
112
150
  dataType: "string";
113
151
  columnType: "SQLiteText";
114
152
  data: string;
@@ -127,7 +165,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
127
165
  }>;
128
166
  city_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
129
167
  name: "city_id";
130
- tableName: "ai_image_jobs";
168
+ tableName: "async_jobs";
131
169
  dataType: "string";
132
170
  columnType: "SQLiteText";
133
171
  data: string;
@@ -146,7 +184,26 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
146
184
  }>;
147
185
  user_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
148
186
  name: "user_id";
149
- tableName: "ai_image_jobs";
187
+ tableName: "async_jobs";
188
+ dataType: "string";
189
+ columnType: "SQLiteText";
190
+ data: string;
191
+ driverParam: string;
192
+ notNull: false;
193
+ hasDefault: false;
194
+ isPrimaryKey: false;
195
+ isAutoincrement: false;
196
+ hasRuntimeDefault: false;
197
+ enumValues: [string, ...string[]];
198
+ baseColumn: never;
199
+ identity: undefined;
200
+ generated: undefined;
201
+ }, {}, {
202
+ length: number | undefined;
203
+ }>;
204
+ service_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
205
+ name: "service_id";
206
+ tableName: "async_jobs";
150
207
  dataType: "string";
151
208
  columnType: "SQLiteText";
152
209
  data: string;
@@ -165,7 +222,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
165
222
  }>;
166
223
  model_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
167
224
  name: "model_id";
168
- tableName: "ai_image_jobs";
225
+ tableName: "async_jobs";
169
226
  dataType: "string";
170
227
  columnType: "SQLiteText";
171
228
  data: string;
@@ -184,7 +241,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
184
241
  }>;
185
242
  created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
186
243
  name: "created_at";
187
- tableName: "ai_image_jobs";
244
+ tableName: "async_jobs";
188
245
  dataType: "string";
189
246
  columnType: "SQLiteText";
190
247
  data: string;
@@ -203,7 +260,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
203
260
  }>;
204
261
  updated_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
205
262
  name: "updated_at";
206
- tableName: "ai_image_jobs";
263
+ tableName: "async_jobs";
207
264
  dataType: "string";
208
265
  columnType: "SQLiteText";
209
266
  data: string;
@@ -224,15 +281,15 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
224
281
  dialect: "sqlite";
225
282
  }>;
226
283
  /**
227
- * 默认 Postgres 图片任务表。
284
+ * 默认 Postgres 异步任务表。
228
285
  */
229
- export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithColumns<{
230
- name: "ai_image_jobs";
286
+ export declare const pgAsyncJobs: import("drizzle-orm/pg-core").PgTableWithColumns<{
287
+ name: "async_jobs";
231
288
  schema: undefined;
232
289
  columns: {
233
290
  job_id: import("drizzle-orm/pg-core").PgColumn<{
234
291
  name: "job_id";
235
- tableName: "ai_image_jobs";
292
+ tableName: "async_jobs";
236
293
  dataType: "string";
237
294
  columnType: "PgText";
238
295
  data: string;
@@ -247,9 +304,26 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
247
304
  identity: undefined;
248
305
  generated: undefined;
249
306
  }, {}, {}>;
307
+ job_type: import("drizzle-orm/pg-core").PgColumn<{
308
+ name: "job_type";
309
+ tableName: "async_jobs";
310
+ dataType: "string";
311
+ columnType: "PgText";
312
+ data: string;
313
+ driverParam: string;
314
+ notNull: true;
315
+ hasDefault: false;
316
+ isPrimaryKey: false;
317
+ isAutoincrement: false;
318
+ hasRuntimeDefault: false;
319
+ enumValues: [string, ...string[]];
320
+ baseColumn: never;
321
+ identity: undefined;
322
+ generated: undefined;
323
+ }, {}, {}>;
250
324
  status: import("drizzle-orm/pg-core").PgColumn<{
251
325
  name: "status";
252
- tableName: "ai_image_jobs";
326
+ tableName: "async_jobs";
253
327
  dataType: "string";
254
328
  columnType: "PgText";
255
329
  data: string;
@@ -266,7 +340,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
266
340
  }, {}, {}>;
267
341
  input_json: import("drizzle-orm/pg-core").PgColumn<{
268
342
  name: "input_json";
269
- tableName: "ai_image_jobs";
343
+ tableName: "async_jobs";
270
344
  dataType: "string";
271
345
  columnType: "PgText";
272
346
  data: string;
@@ -281,9 +355,26 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
281
355
  identity: undefined;
282
356
  generated: undefined;
283
357
  }, {}, {}>;
358
+ state_json: import("drizzle-orm/pg-core").PgColumn<{
359
+ name: "state_json";
360
+ tableName: "async_jobs";
361
+ dataType: "string";
362
+ columnType: "PgText";
363
+ data: string;
364
+ driverParam: string;
365
+ notNull: false;
366
+ hasDefault: false;
367
+ isPrimaryKey: false;
368
+ isAutoincrement: false;
369
+ hasRuntimeDefault: false;
370
+ enumValues: [string, ...string[]];
371
+ baseColumn: never;
372
+ identity: undefined;
373
+ generated: undefined;
374
+ }, {}, {}>;
284
375
  result_json: import("drizzle-orm/pg-core").PgColumn<{
285
376
  name: "result_json";
286
- tableName: "ai_image_jobs";
377
+ tableName: "async_jobs";
287
378
  dataType: "string";
288
379
  columnType: "PgText";
289
380
  data: string;
@@ -300,7 +391,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
300
391
  }, {}, {}>;
301
392
  error: import("drizzle-orm/pg-core").PgColumn<{
302
393
  name: "error";
303
- tableName: "ai_image_jobs";
394
+ tableName: "async_jobs";
304
395
  dataType: "string";
305
396
  columnType: "PgText";
306
397
  data: string;
@@ -317,7 +408,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
317
408
  }, {}, {}>;
318
409
  message: import("drizzle-orm/pg-core").PgColumn<{
319
410
  name: "message";
320
- tableName: "ai_image_jobs";
411
+ tableName: "async_jobs";
321
412
  dataType: "string";
322
413
  columnType: "PgText";
323
414
  data: string;
@@ -334,7 +425,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
334
425
  }, {}, {}>;
335
426
  city_id: import("drizzle-orm/pg-core").PgColumn<{
336
427
  name: "city_id";
337
- tableName: "ai_image_jobs";
428
+ tableName: "async_jobs";
338
429
  dataType: "string";
339
430
  columnType: "PgText";
340
431
  data: string;
@@ -351,7 +442,24 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
351
442
  }, {}, {}>;
352
443
  user_id: import("drizzle-orm/pg-core").PgColumn<{
353
444
  name: "user_id";
354
- tableName: "ai_image_jobs";
445
+ tableName: "async_jobs";
446
+ dataType: "string";
447
+ columnType: "PgText";
448
+ data: string;
449
+ driverParam: string;
450
+ notNull: false;
451
+ hasDefault: false;
452
+ isPrimaryKey: false;
453
+ isAutoincrement: false;
454
+ hasRuntimeDefault: false;
455
+ enumValues: [string, ...string[]];
456
+ baseColumn: never;
457
+ identity: undefined;
458
+ generated: undefined;
459
+ }, {}, {}>;
460
+ service_id: import("drizzle-orm/pg-core").PgColumn<{
461
+ name: "service_id";
462
+ tableName: "async_jobs";
355
463
  dataType: "string";
356
464
  columnType: "PgText";
357
465
  data: string;
@@ -368,7 +476,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
368
476
  }, {}, {}>;
369
477
  model_id: import("drizzle-orm/pg-core").PgColumn<{
370
478
  name: "model_id";
371
- tableName: "ai_image_jobs";
479
+ tableName: "async_jobs";
372
480
  dataType: "string";
373
481
  columnType: "PgText";
374
482
  data: string;
@@ -385,7 +493,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
385
493
  }, {}, {}>;
386
494
  created_at: import("drizzle-orm/pg-core").PgColumn<{
387
495
  name: "created_at";
388
- tableName: "ai_image_jobs";
496
+ tableName: "async_jobs";
389
497
  dataType: "string";
390
498
  columnType: "PgText";
391
499
  data: string;
@@ -402,7 +510,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
402
510
  }, {}, {}>;
403
511
  updated_at: import("drizzle-orm/pg-core").PgColumn<{
404
512
  name: "updated_at";
405
- tableName: "ai_image_jobs";
513
+ tableName: "async_jobs";
406
514
  dataType: "string";
407
515
  columnType: "PgText";
408
516
  data: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/service/async-job/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6B1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BtB,CAAC"}
@@ -1,23 +1,27 @@
1
1
  /**
2
- * AI Service 数据库 schema 模块。
2
+ * 通用异步任务数据库 schema 模块。
3
3
  *
4
- * 这里定义 AIService 自己持久化使用的表。当前主要用于图片生成任务,
5
- * 让 Worker 可以把长耗时生成从前台 HTTP 请求中拆出来。
4
+ * async_jobs City 的统一异步任务表,用于图片生成、视频生成、
5
+ * 文件处理等需要跨请求恢复或轮询的任务。
6
6
  */
7
7
  import { pgTable, text as pgText } from "drizzle-orm/pg-core";
8
8
  import { sqliteTable, text as sqliteText } from "drizzle-orm/sqlite-core";
9
- const DEFAULT_IMAGE_JOBS_TABLE = "ai_image_jobs";
9
+ const DEFAULT_ASYNC_JOBS_TABLE = "async_jobs";
10
10
  /**
11
- * 默认 SQLite 图片任务表。
11
+ * 默认 SQLite 异步任务表。
12
12
  */
13
- export const sqliteAIImageJobs = sqliteTable(DEFAULT_IMAGE_JOBS_TABLE, {
14
- /** Federation 内部生成的图片任务 ID。 */
13
+ export const sqliteAsyncJobs = sqliteTable(DEFAULT_ASYNC_JOBS_TABLE, {
14
+ /** City 内部生成的异步任务 ID。 */
15
15
  job_id: sqliteText("job_id").primaryKey(),
16
+ /** 任务类型,例如 `ai.image.generate`。 */
17
+ job_type: sqliteText("job_type").notNull(),
16
18
  /** 任务状态:queued / running / succeeded / failed。 */
17
19
  status: sqliteText("status").notNull(),
18
- /** 原始图片生成输入,JSON 字符串。 */
20
+ /** 原始任务输入,JSON 字符串。 */
19
21
  input_json: sqliteText("input_json").notNull(),
20
- /** 成功后的 UIMessage 结果,JSON 字符串。 */
22
+ /** 可恢复任务中间状态,JSON 字符串。 */
23
+ state_json: sqliteText("state_json"),
24
+ /** 成功后的业务结果,JSON 字符串。 */
21
25
  result_json: sqliteText("result_json"),
22
26
  /** 失败时给客户端展示的错误消息。 */
23
27
  error: sqliteText("error"),
@@ -27,6 +31,8 @@ export const sqliteAIImageJobs = sqliteTable(DEFAULT_IMAGE_JOBS_TABLE, {
27
31
  city_id: sqliteText("city_id"),
28
32
  /** 当前终端用户 ID。 */
29
33
  user_id: sqliteText("user_id"),
34
+ /** 创建该任务的 Service ID。 */
35
+ service_id: sqliteText("service_id"),
30
36
  /** 本次任务解析到的模型 ID。 */
31
37
  model_id: sqliteText("model_id"),
32
38
  /** 创建时间。 */
@@ -35,16 +41,20 @@ export const sqliteAIImageJobs = sqliteTable(DEFAULT_IMAGE_JOBS_TABLE, {
35
41
  updated_at: sqliteText("updated_at").notNull(),
36
42
  });
37
43
  /**
38
- * 默认 Postgres 图片任务表。
44
+ * 默认 Postgres 异步任务表。
39
45
  */
40
- export const pgAIImageJobs = pgTable(DEFAULT_IMAGE_JOBS_TABLE, {
41
- /** Federation 内部生成的图片任务 ID。 */
46
+ export const pgAsyncJobs = pgTable(DEFAULT_ASYNC_JOBS_TABLE, {
47
+ /** City 内部生成的异步任务 ID。 */
42
48
  job_id: pgText("job_id").primaryKey(),
49
+ /** 任务类型,例如 `ai.image.generate`。 */
50
+ job_type: pgText("job_type").notNull(),
43
51
  /** 任务状态:queued / running / succeeded / failed。 */
44
52
  status: pgText("status").notNull(),
45
- /** 原始图片生成输入,JSON 字符串。 */
53
+ /** 原始任务输入,JSON 字符串。 */
46
54
  input_json: pgText("input_json").notNull(),
47
- /** 成功后的 UIMessage 结果,JSON 字符串。 */
55
+ /** 可恢复任务中间状态,JSON 字符串。 */
56
+ state_json: pgText("state_json"),
57
+ /** 成功后的业务结果,JSON 字符串。 */
48
58
  result_json: pgText("result_json"),
49
59
  /** 失败时给客户端展示的错误消息。 */
50
60
  error: pgText("error"),
@@ -54,6 +64,8 @@ export const pgAIImageJobs = pgTable(DEFAULT_IMAGE_JOBS_TABLE, {
54
64
  city_id: pgText("city_id"),
55
65
  /** 当前终端用户 ID。 */
56
66
  user_id: pgText("user_id"),
67
+ /** 创建该任务的 Service ID。 */
68
+ service_id: pgText("service_id"),
57
69
  /** 本次任务解析到的模型 ID。 */
58
70
  model_id: pgText("model_id"),
59
71
  /** 创建时间。 */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/service/async-job/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1E,MAAM,wBAAwB,GAAG,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC,wBAAwB,EAAE;IACnE,yBAAyB;IACzB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;IACzC,mCAAmC;IACnC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IAC1C,kDAAkD;IAClD,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IACtC,uBAAuB;IACvB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC9C,0BAA0B;IAC1B,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC;IACpC,yBAAyB;IACzB,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC;IACtC,sBAAsB;IACtB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAC1B,2BAA2B;IAC3B,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,iCAAiC;IACjC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,iBAAiB;IACjB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,yBAAyB;IACzB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC;IACpC,qBAAqB;IACrB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC;IAChC,YAAY;IACZ,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC9C,YAAY;IACZ,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC/C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,wBAAwB,EAAE;IAC3D,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;IACrC,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACtC,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAClC,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC;IAChC,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAClC,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC;IAChC,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC3C,CAAC,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * 通用异步任务类型模块。
3
+ *
4
+ * City 内部所有需要跨请求恢复、轮询或后台执行的任务都使用这组结构。
5
+ * 具体业务能力通过 job_type 区分,例如图片生成使用 `ai.image.generate`。
6
+ */
7
+ /** 通用异步任务状态。 */
8
+ export type AsyncJobStatus = "queued" | "running" | "succeeded" | "failed";
9
+ /**
10
+ * 通用异步任务表行。
11
+ */
12
+ export interface AsyncJobRecord {
13
+ /** City 内部生成的异步任务 ID。 */
14
+ job_id: string;
15
+ /** 任务类型,例如 `ai.image.generate`。 */
16
+ job_type: string;
17
+ /** 当前任务状态。 */
18
+ status: AsyncJobStatus;
19
+ /** 创建任务时的原始输入,JSON 字符串。 */
20
+ input_json: string;
21
+ /** 任务推进时需要保留的中间状态,JSON 字符串。 */
22
+ state_json?: string | null;
23
+ /** 成功后的业务结果,JSON 字符串。 */
24
+ result_json?: string | null;
25
+ /** 失败时给客户端展示的错误消息。 */
26
+ error?: string | null;
27
+ /** 当前任务状态说明,便于客户端展示或排障。 */
28
+ message?: string | null;
29
+ /** 当前 user_token 绑定的 City ID。 */
30
+ city_id?: string | null;
31
+ /** 当前终端用户 ID。 */
32
+ user_id?: string | null;
33
+ /** 创建该任务的 Service ID。 */
34
+ service_id?: string | null;
35
+ /** 本次任务解析到的模型 ID。 */
36
+ model_id?: string | null;
37
+ /** 创建时间。 */
38
+ created_at: string;
39
+ /** 更新时间。 */
40
+ updated_at: string;
41
+ }
42
+ //# sourceMappingURL=AsyncJob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncJob.d.ts","sourceRoot":"","sources":["../../src/types/AsyncJob.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gBAAgB;AAChB,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iBAAiB;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * 通用异步任务类型模块。
3
+ *
4
+ * City 内部所有需要跨请求恢复、轮询或后台执行的任务都使用这组结构。
5
+ * 具体业务能力通过 job_type 区分,例如图片生成使用 `ai.image.generate`。
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=AsyncJob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsyncJob.js","sourceRoot":"","sources":["../../src/types/AsyncJob.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@downcity/city",
3
- "version": "0.2.93",
3
+ "version": "0.2.100",
4
4
  "description": "Downcity City runtime and City access SDK for services, actions, auth, env, and cities.",
5
5
  "type": "module",
6
6
  "main": "./bin/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/service/ai/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuB5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBxB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/service/ai/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1E,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC,wBAAwB,EAAE;IACrE,+BAA+B;IAC/B,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;IACzC,kDAAkD;IAClD,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IACtC,yBAAyB;IACzB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC9C,kCAAkC;IAClC,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC;IACtC,sBAAsB;IACtB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAC1B,2BAA2B;IAC3B,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,iCAAiC;IACjC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,iBAAiB;IACjB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,qBAAqB;IACrB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC;IAChC,YAAY;IACZ,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC9C,YAAY;IACZ,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC/C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,wBAAwB,EAAE;IAC7D,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;IACrC,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAClC,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAClC,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC3C,CAAC,CAAC"}