@downcity/city 0.2.151 → 0.2.154

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 (37) hide show
  1. package/bin/index.d.ts +3 -1
  2. package/bin/index.d.ts.map +1 -1
  3. package/bin/index.js +1 -0
  4. package/bin/index.js.map +1 -1
  5. package/bin/pact/user/types.d.ts +2 -0
  6. package/bin/pact/user/types.d.ts.map +1 -1
  7. package/bin/service/ai/ai-service.d.ts +3 -55
  8. package/bin/service/ai/ai-service.d.ts.map +1 -1
  9. package/bin/service/ai/ai-service.js +34 -245
  10. package/bin/service/ai/ai-service.js.map +1 -1
  11. package/bin/service/ai/model-registry.d.ts +39 -0
  12. package/bin/service/ai/model-registry.d.ts.map +1 -0
  13. package/bin/service/ai/model-registry.js +74 -0
  14. package/bin/service/ai/model-registry.js.map +1 -0
  15. package/bin/service/ai/model-routing.d.ts +10 -0
  16. package/bin/service/ai/model-routing.d.ts.map +1 -0
  17. package/bin/service/ai/model-routing.js +140 -0
  18. package/bin/service/ai/model-routing.js.map +1 -0
  19. package/bin/service/ai/provider.d.ts +11 -1
  20. package/bin/service/ai/provider.d.ts.map +1 -1
  21. package/bin/service/ai/provider.js +33 -4
  22. package/bin/service/ai/provider.js.map +1 -1
  23. package/bin/service/ai/reasoning.d.ts +26 -0
  24. package/bin/service/ai/reasoning.d.ts.map +1 -0
  25. package/bin/service/ai/reasoning.js +118 -0
  26. package/bin/service/ai/reasoning.js.map +1 -0
  27. package/bin/service/ai/types.d.ts +5 -24
  28. package/bin/service/ai/types.d.ts.map +1 -1
  29. package/bin/types/AIReasoning.d.ts +25 -0
  30. package/bin/types/AIReasoning.d.ts.map +1 -0
  31. package/bin/types/AIReasoning.js +7 -0
  32. package/bin/types/AIReasoning.js.map +1 -0
  33. package/bin/types/AIRouting.d.ts +37 -0
  34. package/bin/types/AIRouting.d.ts.map +1 -0
  35. package/bin/types/AIRouting.js +7 -0
  36. package/bin/types/AIRouting.js.map +1 -0
  37. package/package.json +2 -2
package/bin/index.d.ts CHANGED
@@ -24,7 +24,9 @@ export type { ServiceDefinition, ServiceInstallContext, ServiceRouteContext, } f
24
24
  export type { InstructionDefinition, InstructionContext, InstructionActionDefinition, InstructionCapable, } from "./service/instruction.js";
25
25
  export { AIService } from "./service/ai/ai-service.js";
26
26
  export { Provider } from "./service/ai/provider.js";
27
+ export { read_resolved_reasoning } from "./service/ai/reasoning.js";
27
28
  export type { AIServiceOptions, ModelConfig, ModelFallbackMedia, ModelFallbackRule, ModelActions, OpenAICompatibleClient, OpenAICompatibleClientConfig, ProviderOptions, PublicModel, } from "./service/ai/types.js";
29
+ export type { AIProviderOptionObject, AIProviderOptions, AIProviderOptionValue, AIResolvedReasoning, } from "./types/AIReasoning.js";
28
30
  export { buildAssistantMessage, buildImageMessage, buildToolSet, isRecord, normalizeAIUsage, normalizeOpenAICompatibleBody, normalizeTextOnlyOpenAICompatibleBody, readErrorMessage, readJsonResponse, readOpenAICompatibleSseUsage, readRequiredEnv, readString, resolveUpstreamModel, stripUndefined, toRecord, trimTrailingSlash, } from "./service/ai/helpers.js";
29
31
  export type { BuildAssistantMessageResult, ExtractedImage, ToolCallShape, } from "./service/ai/helpers.js";
30
32
  export type { AIBalanceBridge, AIBalanceChargeInput, AIProviderBillFn, AIProviderChargedOutput, AIProviderChargedResponse, AIProviderChargeLine, } from "./service/ai/charge.js";
@@ -38,7 +40,7 @@ export { executeDDL } from "./store/db.js";
38
40
  export type { CityTableApi } from "./store/table-api.js";
39
41
  export type { CityUserSchemaInput } from "./store/types.js";
40
42
  export type { FetchLike, FetchResponseLike, RawStreamBody, RequestInitLike, } from "./pact/http.js";
41
- export type { CityModel, CityModelDescriptor, CityModelEnvRequirement, } from "@downcity/type";
43
+ export type { CityModel, CityModelDescriptor, CityModelEnvRequirement, CityModelReasoning, CityModelReasoningEffort, } from "@downcity/type";
42
44
  export { City } from "./client/city.js";
43
45
  export type { AdminCityOptions, CityBaseOptions, CityOptions, CityOptionsForRole, CityRole, UserCityOptions, } from "./client/types.js";
44
46
  export { AIInvoker, ModelCatalog, ModelHandle } from "./pact/invoker/ai/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/bin/index.js CHANGED
@@ -18,6 +18,7 @@ export { InstallableService } from "./service/installable-service.js";
18
18
  export { Action } from "./service/action.js";
19
19
  export { AIService } from "./service/ai/ai-service.js";
20
20
  export { Provider } from "./service/ai/provider.js";
21
+ export { read_resolved_reasoning } from "./service/ai/reasoning.js";
21
22
  export { buildAssistantMessage, buildImageMessage, buildToolSet, isRecord, normalizeAIUsage, normalizeOpenAICompatibleBody, normalizeTextOnlyOpenAICompatibleBody, readErrorMessage, readJsonResponse, readOpenAICompatibleSseUsage, readRequiredEnv, readString, resolveUpstreamModel, stripUndefined, toRecord, trimTrailingSlash, } from "./service/ai/helpers.js";
22
23
  // ===========================================================================
23
24
  // 场景 3:用户鉴权与 Token
package/bin/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAKxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAepD,8EAA8E;AAC9E,+CAA+C;AAC/C,8EAA8E;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAmC7C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAcpD,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,6BAA6B,EAC7B,qCAAqC,EACrC,gBAAgB,EAChB,gBAAgB,EAChB,4BAA4B,EAC5B,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACR,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAiBjC,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAShE,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAQ1D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAOtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAqB3C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAUxC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAyCxE,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AA8BzD,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE7E,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,WAAW,EACX,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAKxD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAepD,8EAA8E;AAC9E,+CAA+C;AAC/C,8EAA8E;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAmC7C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAqBpE,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,6BAA6B,EAC7B,qCAAqC,EACrC,gBAAgB,EAChB,gBAAgB,EAChB,4BAA4B,EAC5B,eAAe,EACf,UAAU,EACV,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACR,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAiBjC,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAShE,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAQ1D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAOtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAuB3C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAUxC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAyCxE,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AA8BzD,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE7E,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,WAAW,EACX,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
@@ -150,6 +150,8 @@ export interface UserAsrInput extends UserServiceInput {
150
150
  export interface UserServiceInput {
151
151
  /** AIService 调用必须显式传入的模型引用或模型 ID。 */
152
152
  model: UserModelInput;
153
+ /** 模型推理强度档位,必须来自模型目录 `reasoning.efforts`。 */
154
+ reasoning_effort?: string;
153
155
  [key: string]: unknown;
154
156
  }
155
157
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/pact/user/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/pact/user/types.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ import type { AIServiceOptions, ModelConfig, PublicModel } from "./types.js";
21
21
  type EnvReader = (key: string) => string | undefined;
22
22
  export declare class AIService extends Service {
23
23
  /** 模型注册表 */
24
- private modelMap;
24
+ private readonly models;
25
25
  /** SDK 通路 action 映射(modality → action) */
26
26
  private modalityActions;
27
27
  /** AI 专用余额桥接。 */
@@ -44,59 +44,8 @@ export declare class AIService extends Service {
44
44
  private resolveOpenAIAction;
45
45
  private createAutoPassthroughAction;
46
46
  private getModelModalities;
47
- private getModelEnvRequirements;
48
- private getMissingEnv;
49
- /**
50
- * 按请求媒体输入和模型级 fallback 规则决定实际执行模型。
51
- *
52
- * 关键说明(中文)
53
- * - 这里只做路由,不改写请求体,避免 AIService 绑定具体上游协议。
54
- * - UIMessage 只从 file part 提取媒体信息,具体如何分流交给 fallback.match。
55
- * - OpenAI image_url / input_image 会归一为 image 媒体输入后进入同一套规则。
56
- * - fallback 规则按数组顺序匹配,规则顺序高于请求里的 file 顺序。
57
- * - 没有配置 fallback 时保持既有行为,由 Provider 自己决定如何处理。
58
- */
59
- private planTextExecution;
60
- /**
61
- * 解析模型 fallback 引用。
62
- */
63
- private resolveFallbackModel;
64
- /**
65
- * 根据一条规则和一个媒体输入解析 fallback 计划。
66
- */
67
- private resolveMediaFallbackPlan;
68
- /**
69
- * 安全执行 fallback 规则匹配。
70
- */
71
- private matchesFallbackRule;
72
- /**
73
- * 从当前请求中提取可参与 fallback 判断的媒体输入。
74
- */
75
- private extractMediaInputs;
76
- /**
77
- * 扫描 OpenAI-compatible messages 的媒体输入。
78
- */
79
- private extractOpenAIMediaInputs;
80
- /**
81
- * 读取 OpenAI-compatible content part 的媒体输入。
82
- */
83
- private readOpenAIMediaPart;
84
- /**
85
- * 读取 OpenAI-compatible 图片 URL。
86
- */
87
- private readOpenAIImageUrl;
88
- /**
89
- * 扫描 UIMessage messages 的 file 媒体输入。
90
- */
91
- private extractUiMediaInputs;
92
- /**
93
- * 读取 UIMessage file part 的媒体输入。
94
- */
95
- private readUiFilePart;
96
- /**
97
- * 构造 fallback 媒体输入,避免可选字段写入 undefined。
98
- */
99
- private buildFallbackMedia;
47
+ /** 按媒体输入解析最终模型,推理强度必须在该步骤之后解析。 */
48
+ private plan_text_execution;
100
49
  private handleModality;
101
50
  private createImageJob;
102
51
  private readImageJob;
@@ -183,7 +132,6 @@ export declare class AIService extends Service {
183
132
  env: EnvReader;
184
133
  identity: "guest" | "user" | "admin";
185
134
  }): PublicModel[];
186
- private toPublicModel;
187
135
  }
188
136
  export {};
189
137
  //# sourceMappingURL=ai-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-service.d.ts","sourceRoot":"","sources":["../../../src/service/ai/ai-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-service.d.ts","sourceRoot":"","sources":["../../../src/service/ai/ai-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,OAAO,EAAgB,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI7C,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EAEX,WAAW,EACZ,MAAM,YAAY,CAAC;AA2CpB,KAAK,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AA2PrD,qBAAa,SAAU,SAAQ,OAAO;IACpC,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAEhD,0CAA0C;IAC1C,OAAO,CAAC,eAAe,CAA+B;IAEtD,iBAAiB;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAkB;IAC3C,uCAAuC;IACvC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAS;gBAE3C,OAAO,GAAE,gBAAqB;IA0C1C,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,EAAE,GAAG,IAAI;IAKrD,UAAU,IAAI,WAAW,EAAE;IAI3B,SAAS,IAAI,OAAO;IAMpB,OAAO,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,CAAC,EAAE,SAAS,GAAG;QAAE,KAAK,CAAC,EAAE,WAAW,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAA;KAAE;IAgB7G,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,2BAA2B;IAmCnC,OAAO,CAAC,kBAAkB;IAS1B,kCAAkC;IAClC,OAAO,CAAC,mBAAmB;YAkBb,cAAc;YA4Bd,cAAc;YAgBd,YAAY;IAS1B;;OAEG;YACW,aAAa;IA2C3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAOjC;;OAEG;IACH,OAAO,CAAC,kCAAkC;IAc1C;;OAEG;YACW,iBAAiB;IAU/B;;;;;;;OAOG;YACW,2BAA2B;IAwDzC;;OAEG;YACW,cAAc;IAuB5B;;OAEG;YACW,eAAe;IAW7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAYxB;;OAEG;YACW,uBAAuB;YAmBvB,qBAAqB;IA6BnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0B3B;;;;;;;OAOG;YACW,QAAQ;IAMtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgB5B;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAgB7B;;OAEG;YACW,YAAY;IAkD1B,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE;QAC/C,GAAG,EAAE,SAAS,CAAC;QACf,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;KACtC,GAAG,WAAW,EAAE;CAMlB"}
@@ -19,6 +19,9 @@ import { Service } from "../service.js";
19
19
  import { httpError } from "../../utils/helpers.js";
20
20
  import { sqliteAsyncJobs } from "../async-job/schema.js";
21
21
  import { normalizeAIUsage } from "./helpers.js";
22
+ import { attach_resolved_reasoning, resolve_model_reasoning, } from "./reasoning.js";
23
+ import { AIModelRegistry } from "./model-registry.js";
24
+ import { resolve_text_routing_plan } from "./model-routing.js";
22
25
  /** AIService 直接暴露的 SDK 通路模态列表。图片只通过 image/create + image/result 暴露。 */
23
26
  const MODALITIES = ["text", "stream", "video", "tts", "asr"];
24
27
  /** 用户侧默认以 text 模态排序模型 */
@@ -94,14 +97,6 @@ function readOptionalNumber(value) {
94
97
  const parsed = Number(value);
95
98
  return Number.isFinite(parsed) ? parsed : undefined;
96
99
  }
97
- /**
98
- * 读取 part 的 MIME 类型。
99
- */
100
- function readPartMediaType(part) {
101
- return readOptionalString(part.mediaType)
102
- ?? readOptionalString(part.media_type)
103
- ?? "";
104
- }
105
100
  /**
106
101
  * 读取正数配置。
107
102
  */
@@ -273,7 +268,7 @@ function isImageJobStatus(value) {
273
268
  }
274
269
  export class AIService extends Service {
275
270
  /** 模型注册表 */
276
- modelMap = new Map();
271
+ models = new AIModelRegistry();
277
272
  /** SDK 通路 action 映射(modality → action) */
278
273
  modalityActions = new Map();
279
274
  /** AI 专用余额桥接。 */
@@ -314,25 +309,14 @@ export class AIService extends Service {
314
309
  }
315
310
  // ========== 模型注册 ==========
316
311
  use(...inputs) {
317
- const configs = [];
318
- for (const input of inputs) {
319
- if (Array.isArray(input))
320
- configs.push(...input);
321
- else
322
- configs.push(input);
323
- }
324
- for (const config of configs) {
325
- if (this.modelMap.has(config.id))
326
- throw new Error(`Duplicate model: ${config.id}`);
327
- this.modelMap.set(config.id, config);
328
- }
312
+ this.models.register(...inputs);
329
313
  return this;
330
314
  }
331
315
  listModels() {
332
- return [...this.modelMap.values()];
316
+ return this.models.list();
333
317
  }
334
318
  hasAction() {
335
- return this.modelMap.size > 0;
319
+ return this.models.size > 0;
336
320
  }
337
321
  // ========== 模型匹配 ==========
338
322
  resolve(query, env) {
@@ -340,10 +324,10 @@ export class AIService extends Service {
340
324
  const isOpenAIMode = mode === "openai";
341
325
  if (!modelId)
342
326
  throw httpError(422, "model is required");
343
- const model = this.modelMap.get(modelId);
327
+ const model = this.models.get(modelId);
344
328
  if (!model)
345
329
  throw httpError(422, `Unknown model: ${modelId}`);
346
- if (env && this.getMissingEnv(model, env).length > 0) {
330
+ if (env && this.models.get_missing_env(model, env).length > 0) {
347
331
  throw httpError(422, `No available model: ${modelId}`);
348
332
  }
349
333
  const action = isOpenAIMode ? this.resolveOpenAIAction(model) : this.getAction(model, mode);
@@ -412,209 +396,27 @@ export class AIService extends Service {
412
396
  modalities.push("openai");
413
397
  return modalities.filter((mode) => mode !== "image_create" && mode !== "image_fetch" && mode !== "image_result");
414
398
  }
415
- getModelEnvRequirements(model) {
416
- const requirements = model.env
417
- ? Object.entries(model.env)
418
- : model.envKey
419
- ? [[model.envKey, `${model.id} API Key`]]
420
- : [];
421
- return requirements.map(([key, description]) => ({
422
- key,
423
- description,
424
- required: true,
425
- }));
426
- }
427
- getMissingEnv(model, env) {
428
- return this.getModelEnvRequirements(model)
429
- .filter((item) => item.required && !env(item.key))
430
- .map((item) => item.key);
431
- }
432
- /**
433
- * 按请求媒体输入和模型级 fallback 规则决定实际执行模型。
434
- *
435
- * 关键说明(中文)
436
- * - 这里只做路由,不改写请求体,避免 AIService 绑定具体上游协议。
437
- * - UIMessage 只从 file part 提取媒体信息,具体如何分流交给 fallback.match。
438
- * - OpenAI image_url / input_image 会归一为 image 媒体输入后进入同一套规则。
439
- * - fallback 规则按数组顺序匹配,规则顺序高于请求里的 file 顺序。
440
- * - 没有配置 fallback 时保持既有行为,由 Provider 自己决定如何处理。
441
- */
442
- planTextExecution(resolved, ctx, mode) {
443
- const model = resolved.model;
444
- if (!model || !model.fallback?.length) {
445
- return { resolved };
446
- }
447
- const media_inputs = this.extractMediaInputs(ctx.input, mode);
448
- if (media_inputs.length === 0) {
449
- return { resolved };
450
- }
451
- for (const rule of model.fallback ?? []) {
452
- for (const media of media_inputs) {
453
- const plan = this.resolveMediaFallbackPlan(model, rule, media, mode, ctx.env);
454
- if (!plan)
455
- continue;
456
- return plan;
457
- }
458
- }
459
- return { resolved };
460
- }
461
- /**
462
- * 解析模型 fallback 引用。
463
- */
464
- resolveFallbackModel(input) {
465
- if (!input)
466
- return undefined;
467
- if (typeof input === "string")
468
- return this.modelMap.get(input);
469
- return this.modelMap.get(input.id) ?? input;
470
- }
471
- /**
472
- * 根据一条规则和一个媒体输入解析 fallback 计划。
473
- */
474
- resolveMediaFallbackPlan(model, rule, media, mode, env) {
475
- if (!this.matchesFallbackRule(rule, media))
476
- return undefined;
477
- const fallback_model = this.resolveFallbackModel(rule.model);
478
- if (!fallback_model || fallback_model.id === model.id)
479
- return undefined;
480
- const action = mode === "openai"
481
- ? this.resolveOpenAIAction(fallback_model)
482
- : this.getAction(fallback_model, mode);
483
- if (!action || this.getMissingEnv(fallback_model, env).length > 0)
484
- return undefined;
485
- return {
486
- resolved: {
487
- model: fallback_model,
488
- action,
489
- },
490
- fallback_from: model.id,
491
- fallback_reason: "input_requires_media",
492
- fallback_media_type: media.media_type,
493
- };
494
- }
495
- /**
496
- * 安全执行 fallback 规则匹配。
497
- */
498
- matchesFallbackRule(rule, media) {
499
- try {
500
- return rule.match(media);
501
- }
502
- catch {
503
- return false;
504
- }
505
- }
506
- /**
507
- * 从当前请求中提取可参与 fallback 判断的媒体输入。
508
- */
509
- extractMediaInputs(input, mode) {
510
- if (!isRecord(input))
511
- return [];
512
- if (mode === "openai") {
513
- return this.extractOpenAIMediaInputs(input.messages);
514
- }
515
- return this.extractUiMediaInputs(input.messages);
516
- }
517
- /**
518
- * 扫描 OpenAI-compatible messages 的媒体输入。
519
- */
520
- extractOpenAIMediaInputs(messages) {
521
- if (!Array.isArray(messages))
522
- return [];
523
- const media_inputs = [];
524
- for (const message of messages) {
525
- if (!isRecord(message))
526
- continue;
527
- const content = message.content;
528
- if (!Array.isArray(content))
529
- continue;
530
- for (const part of content) {
531
- const media = this.readOpenAIMediaPart(part);
532
- if (media)
533
- media_inputs.push(media);
534
- }
535
- }
536
- return media_inputs;
537
- }
538
- /**
539
- * 读取 OpenAI-compatible content part 的媒体输入。
540
- */
541
- readOpenAIMediaPart(part) {
542
- if (!isRecord(part))
543
- return undefined;
544
- const type = readOptionalString(part.type);
545
- if (type === "image_url" || type === "input_image") {
546
- return this.buildFallbackMedia("image/*", {
547
- url: this.readOpenAIImageUrl(part),
548
- });
549
- }
550
- if (type !== "file")
551
- return undefined;
552
- const media_type = readPartMediaType(part);
553
- if (!media_type)
554
- return undefined;
555
- return this.buildFallbackMedia(media_type, {
556
- filename: readFilePartFilename(part),
557
- url: readOptionalString(part.url),
399
+ /** 按媒体输入解析最终模型,推理强度必须在该步骤之后解析。 */
400
+ plan_text_execution(resolved, ctx, mode) {
401
+ return resolve_text_routing_plan(resolved, ctx.input, mode, {
402
+ resolve_model: (input) => typeof input === "string"
403
+ ? this.models.get(input)
404
+ : this.models.get(input.id) ?? input,
405
+ resolve_action: (model, target_mode) => target_mode === "openai"
406
+ ? this.resolveOpenAIAction(model)
407
+ : this.getAction(model, target_mode),
408
+ is_available: (model) => this.models.get_missing_env(model, ctx.env).length === 0,
558
409
  });
559
410
  }
560
- /**
561
- * 读取 OpenAI-compatible 图片 URL。
562
- */
563
- readOpenAIImageUrl(part) {
564
- const direct_url = readOptionalString(part.url);
565
- if (direct_url)
566
- return direct_url;
567
- if (!isRecord(part.image_url))
568
- return undefined;
569
- return readOptionalString(part.image_url.url);
570
- }
571
- /**
572
- * 扫描 UIMessage messages 的 file 媒体输入。
573
- */
574
- extractUiMediaInputs(messages) {
575
- if (!Array.isArray(messages))
576
- return [];
577
- const media_inputs = [];
578
- for (const message of messages) {
579
- if (!isRecord(message) || !Array.isArray(message.parts))
580
- continue;
581
- for (const part of message.parts) {
582
- const media = this.readUiFilePart(part);
583
- if (media)
584
- media_inputs.push(media);
585
- }
586
- }
587
- return media_inputs;
588
- }
589
- /**
590
- * 读取 UIMessage file part 的媒体输入。
591
- */
592
- readUiFilePart(part) {
593
- if (!isRecord(part) || part.type !== "file")
594
- return undefined;
595
- const media_type = readPartMediaType(part);
596
- if (!media_type)
597
- return undefined;
598
- return this.buildFallbackMedia(media_type, {
599
- filename: readFilePartFilename(part),
600
- url: readOptionalString(part.url),
601
- });
602
- }
603
- /**
604
- * 构造 fallback 媒体输入,避免可选字段写入 undefined。
605
- */
606
- buildFallbackMedia(media_type, optional) {
607
- return {
608
- media_type,
609
- ...(optional.filename ? { filename: optional.filename } : {}),
610
- ...(optional.url ? { url: optional.url } : {}),
611
- };
612
- }
613
411
  // ========== SDK 通路 ==========
614
412
  async handleModality(modality, ctx) {
615
413
  const initial_resolved = this.resolve({ model: this.normalizeModelId(ctx.input.model), mode: modality }, ctx.env);
616
- const { resolved, fallback_from, fallback_reason, fallback_media_type } = this.planTextExecution(initial_resolved, ctx, modality);
414
+ const { resolved, fallback_from, fallback_reason, fallback_media_type } = this.plan_text_execution(initial_resolved, ctx, modality);
415
+ const reasoning = resolved.model && (modality === "text" || modality === "stream")
416
+ ? resolve_model_reasoning(resolved.model, ctx.input)
417
+ : undefined;
617
418
  this.attachResolvedModel(ctx, resolved.model, modality, { fallback_from, fallback_reason, fallback_media_type });
419
+ attach_resolved_reasoning(ctx, reasoning);
618
420
  const started_at = Date.now();
619
421
  try {
620
422
  const provider_output = await resolved.action(ctx);
@@ -675,7 +477,7 @@ export class AIService extends Service {
675
477
  const model_id = job.model_id ?? readOptionalString(ctx.input.model);
676
478
  if (!model_id)
677
479
  throw httpError(422, "Image job is missing model_id");
678
- const model = this.modelMap.get(model_id);
480
+ const model = this.models.get(model_id);
679
481
  if (!model?.actions.image_fetch) {
680
482
  throw httpError(422, `No image_fetch action for model: ${model_id}`);
681
483
  }
@@ -906,9 +708,13 @@ export class AIService extends Service {
906
708
  const body = ctx.input;
907
709
  const modelId = this.normalizeModelId(body.model);
908
710
  const initial_resolved = this.resolve({ model: modelId, mode: "openai" }, ctx.env);
909
- const { resolved, fallback_from, fallback_reason, fallback_media_type } = this.planTextExecution(initial_resolved, ctx, "openai");
711
+ const { resolved, fallback_from, fallback_reason, fallback_media_type } = this.plan_text_execution(initial_resolved, ctx, "openai");
712
+ const reasoning = resolved.model
713
+ ? resolve_model_reasoning(resolved.model, body)
714
+ : undefined;
910
715
  this.attachResolvedModel(ctx, resolved.model, "openai", { fallback_from, fallback_reason, fallback_media_type });
911
716
  ctx.input = body;
717
+ attach_resolved_reasoning(ctx, reasoning);
912
718
  const started_at = Date.now();
913
719
  try {
914
720
  const output = await resolved.action(ctx);
@@ -1056,27 +862,10 @@ export class AIService extends Service {
1056
862
  }
1057
863
  // ========== 模型列表 ==========
1058
864
  static listModels(aiService, options) {
1059
- const { env, identity } = options;
1060
- const includeAdminFields = identity === "admin";
1061
- const items = identity === "admin"
1062
- ? [...aiService.modelMap.values()]
1063
- : [...aiService.modelMap.values()].filter((config) => aiService.getMissingEnv(config, env).length === 0);
1064
- return items.map((config) => aiService.toPublicModel(config, includeAdminFields));
1065
- }
1066
- toPublicModel(config, includeAdminFields = false) {
1067
- return {
1068
- id: config.id,
1069
- name: config.name,
1070
- description: config.description ?? "",
1071
- modalities: this.getModelModalities(config),
1072
- tags: config.tags ?? [],
1073
- meta: config.meta ?? {},
1074
- ...(includeAdminFields
1075
- ? {
1076
- env_requirements: this.getModelEnvRequirements(config),
1077
- }
1078
- : {}),
1079
- };
865
+ return aiService.models.list_public({
866
+ ...options,
867
+ get_modalities: (model) => aiService.getModelModalities(model),
868
+ });
1080
869
  }
1081
870
  }
1082
871
  //# sourceMappingURL=ai-service.js.map