@midscene/core 1.12.3-beta-20260902081623.0 → 1.12.3

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 (81) hide show
  1. package/dist/es/agent/utils.mjs +1 -1
  2. package/dist/es/ai-model/models/doubao.mjs +95 -0
  3. package/dist/es/ai-model/models/doubao.mjs.map +1 -0
  4. package/dist/es/ai-model/models/registry.mjs +1 -1
  5. package/dist/es/ai-model/models/registry.mjs.map +1 -1
  6. package/dist/es/report-html-template.mjs +1 -1
  7. package/dist/es/utils.mjs +1 -1
  8. package/dist/lib/agent/utils.js +1 -1
  9. package/dist/lib/ai-model/models/doubao.js +132 -0
  10. package/dist/lib/ai-model/models/doubao.js.map +1 -0
  11. package/dist/lib/ai-model/models/registry.js +2 -2
  12. package/dist/lib/ai-model/models/registry.js.map +1 -1
  13. package/dist/lib/report-html-template.js +1 -1
  14. package/dist/lib/utils.js +1 -1
  15. package/dist/types/ai-model/models/doubao.d.ts +7 -0
  16. package/package.json +2 -2
  17. package/dist/es/ai-model/models/doubao/action-output-parser.mjs +0 -62
  18. package/dist/es/ai-model/models/doubao/action-output-parser.mjs.map +0 -1
  19. package/dist/es/ai-model/models/doubao/action-space.mjs +0 -103
  20. package/dist/es/ai-model/models/doubao/action-space.mjs.map +0 -1
  21. package/dist/es/ai-model/models/doubao/adapter.mjs +0 -76
  22. package/dist/es/ai-model/models/doubao/adapter.mjs.map +0 -1
  23. package/dist/es/ai-model/models/doubao/area-protocol.mjs +0 -80
  24. package/dist/es/ai-model/models/doubao/area-protocol.mjs.map +0 -1
  25. package/dist/es/ai-model/models/doubao/constants.mjs +0 -6
  26. package/dist/es/ai-model/models/doubao/constants.mjs.map +0 -1
  27. package/dist/es/ai-model/models/doubao/element-protocol.mjs +0 -34
  28. package/dist/es/ai-model/models/doubao/element-protocol.mjs.map +0 -1
  29. package/dist/es/ai-model/models/doubao/insight-protocol.mjs +0 -62
  30. package/dist/es/ai-model/models/doubao/insight-protocol.mjs.map +0 -1
  31. package/dist/es/ai-model/models/doubao/locate-output-parser.mjs +0 -63
  32. package/dist/es/ai-model/models/doubao/locate-output-parser.mjs.map +0 -1
  33. package/dist/es/ai-model/models/doubao/locate-shared.mjs +0 -53
  34. package/dist/es/ai-model/models/doubao/locate-shared.mjs.map +0 -1
  35. package/dist/es/ai-model/models/doubao/planning-protocol.mjs +0 -47
  36. package/dist/es/ai-model/models/doubao/planning-protocol.mjs.map +0 -1
  37. package/dist/es/ai-model/models/doubao/tool-call-parser.mjs +0 -27
  38. package/dist/es/ai-model/models/doubao/tool-call-parser.mjs.map +0 -1
  39. package/dist/es/ai-model/models/doubao/tool-call-serializer.mjs +0 -51
  40. package/dist/es/ai-model/models/doubao/tool-call-serializer.mjs.map +0 -1
  41. package/dist/es/ai-model/models/doubao/xml.mjs +0 -9
  42. package/dist/es/ai-model/models/doubao/xml.mjs.map +0 -1
  43. package/dist/lib/ai-model/models/doubao/action-output-parser.js +0 -99
  44. package/dist/lib/ai-model/models/doubao/action-output-parser.js.map +0 -1
  45. package/dist/lib/ai-model/models/doubao/action-space.js +0 -140
  46. package/dist/lib/ai-model/models/doubao/action-space.js.map +0 -1
  47. package/dist/lib/ai-model/models/doubao/adapter.js +0 -110
  48. package/dist/lib/ai-model/models/doubao/adapter.js.map +0 -1
  49. package/dist/lib/ai-model/models/doubao/area-protocol.js +0 -114
  50. package/dist/lib/ai-model/models/doubao/area-protocol.js.map +0 -1
  51. package/dist/lib/ai-model/models/doubao/constants.js +0 -46
  52. package/dist/lib/ai-model/models/doubao/constants.js.map +0 -1
  53. package/dist/lib/ai-model/models/doubao/element-protocol.js +0 -68
  54. package/dist/lib/ai-model/models/doubao/element-protocol.js.map +0 -1
  55. package/dist/lib/ai-model/models/doubao/insight-protocol.js +0 -96
  56. package/dist/lib/ai-model/models/doubao/insight-protocol.js.map +0 -1
  57. package/dist/lib/ai-model/models/doubao/locate-output-parser.js +0 -100
  58. package/dist/lib/ai-model/models/doubao/locate-output-parser.js.map +0 -1
  59. package/dist/lib/ai-model/models/doubao/locate-shared.js +0 -93
  60. package/dist/lib/ai-model/models/doubao/locate-shared.js.map +0 -1
  61. package/dist/lib/ai-model/models/doubao/planning-protocol.js +0 -81
  62. package/dist/lib/ai-model/models/doubao/planning-protocol.js.map +0 -1
  63. package/dist/lib/ai-model/models/doubao/tool-call-parser.js +0 -64
  64. package/dist/lib/ai-model/models/doubao/tool-call-parser.js.map +0 -1
  65. package/dist/lib/ai-model/models/doubao/tool-call-serializer.js +0 -88
  66. package/dist/lib/ai-model/models/doubao/tool-call-serializer.js.map +0 -1
  67. package/dist/lib/ai-model/models/doubao/xml.js +0 -49
  68. package/dist/lib/ai-model/models/doubao/xml.js.map +0 -1
  69. package/dist/types/ai-model/models/doubao/action-output-parser.d.ts +0 -5
  70. package/dist/types/ai-model/models/doubao/action-space.d.ts +0 -27
  71. package/dist/types/ai-model/models/doubao/adapter.d.ts +0 -5
  72. package/dist/types/ai-model/models/doubao/area-protocol.d.ts +0 -2
  73. package/dist/types/ai-model/models/doubao/constants.d.ts +0 -3
  74. package/dist/types/ai-model/models/doubao/element-protocol.d.ts +0 -2
  75. package/dist/types/ai-model/models/doubao/insight-protocol.d.ts +0 -2
  76. package/dist/types/ai-model/models/doubao/locate-output-parser.d.ts +0 -3
  77. package/dist/types/ai-model/models/doubao/locate-shared.d.ts +0 -10
  78. package/dist/types/ai-model/models/doubao/planning-protocol.d.ts +0 -2
  79. package/dist/types/ai-model/models/doubao/tool-call-parser.d.ts +0 -11
  80. package/dist/types/ai-model/models/doubao/tool-call-serializer.d.ts +0 -12
  81. package/dist/types/ai-model/models/doubao/xml.d.ts +0 -3
@@ -154,7 +154,7 @@ async function matchElementFromCache(context, cacheEntry, cachePrompt, cacheable
154
154
  return;
155
155
  }
156
156
  }
157
- const getMidsceneVersion = ()=>"1.12.3-beta-20260902081623.0";
157
+ const getMidsceneVersion = ()=>"1.12.3";
158
158
  const parsePrompt = (prompt)=>{
159
159
  if ('string' == typeof prompt) return {
160
160
  textPrompt: prompt,
@@ -0,0 +1,95 @@
1
+ import { parseModelResponseJson } from "../shared/json.mjs";
2
+ import { createLocateResultValue, unwrapCoordinateListLikeInput } from "../shared/model-locate-result/index.mjs";
3
+ const doubaoBboxCoordinatesMeta = {
4
+ shape: 'bbox',
5
+ order: 'xy',
6
+ normalizedBy: 1000
7
+ };
8
+ const doubaoPointCoordinatesMeta = {
9
+ shape: 'point',
10
+ order: 'xy',
11
+ normalizedBy: 1000
12
+ };
13
+ const coordinateSequencePattern = /(?:^|[^a-zA-Z0-9])(\d+(?:[^a-zA-Z0-9]+\d+)+)(?=$|[^a-zA-Z0-9])/g;
14
+ function isFourFiniteNumberArray(input) {
15
+ return Array.isArray(input) && 4 === input.length && input.every((value)=>'number' == typeof value && Number.isFinite(value));
16
+ }
17
+ function parseNumbersFromUnexpectedBboxStructure(input) {
18
+ const serialized = JSON.stringify(input);
19
+ if (!serialized) return [];
20
+ const sequences = Array.from(serialized.matchAll(coordinateSequencePattern), (match)=>match[1].match(/\d+/g)?.map(Number) ?? []);
21
+ const longestLength = Math.max(0, ...sequences.map((sequence)=>sequence.length));
22
+ const longestSequences = sequences.filter((sequence)=>sequence.length === longestLength);
23
+ if (1 !== longestSequences.length) return [];
24
+ return longestSequences[0];
25
+ }
26
+ function parseDoubaoRawLocateValue(input) {
27
+ const bbox = unwrapCoordinateListLikeInput(input);
28
+ const bboxList = isFourFiniteNumberArray(bbox) ? bbox : parseNumbersFromUnexpectedBboxStructure(bbox);
29
+ if (4 === bboxList.length || 5 === bboxList.length) return createLocateResultValue(doubaoBboxCoordinatesMeta, [
30
+ bboxList[0],
31
+ bboxList[1],
32
+ bboxList[2],
33
+ bboxList[3]
34
+ ]);
35
+ if (6 === bboxList.length || 2 === bboxList.length || 3 === bboxList.length || 7 === bboxList.length) return createLocateResultValue(doubaoPointCoordinatesMeta, [
36
+ bboxList[0],
37
+ bboxList[1]
38
+ ]);
39
+ if (8 === bboxList.length) return createLocateResultValue(doubaoBboxCoordinatesMeta, [
40
+ bboxList[0],
41
+ bboxList[1],
42
+ bboxList[4],
43
+ bboxList[5]
44
+ ]);
45
+ const msg = `invalid bbox data for doubao-vision mode: ${JSON.stringify(bbox)} `;
46
+ throw new Error(msg);
47
+ }
48
+ const buildDoubaoChatCompletionParams = (input)=>{
49
+ const { midsceneDefaults, userConfig } = input;
50
+ const { reasoningEnabled, reasoningEffort } = userConfig;
51
+ const commonOverrideConfig = {};
52
+ if (void 0 !== userConfig.temperature) commonOverrideConfig.temperature = userConfig.temperature;
53
+ if ('none' !== userConfig.responseFormat && input.expectedJsonObjectResponse) commonOverrideConfig.response_format = {
54
+ type: 'json_object'
55
+ };
56
+ const modelSpecificConfig = {};
57
+ if ('default' !== reasoningEnabled) {
58
+ modelSpecificConfig.thinking = {
59
+ type: reasoningEnabled ?? false ? 'enabled' : 'disabled'
60
+ };
61
+ if (reasoningEffort) modelSpecificConfig.reasoning_effort = reasoningEffort;
62
+ }
63
+ return {
64
+ config: {
65
+ ...midsceneDefaults,
66
+ ...commonOverrideConfig,
67
+ ...modelSpecificConfig
68
+ }
69
+ };
70
+ };
71
+ const doubaoVisionAdapter = {
72
+ jsonParser: parseModelResponseJson,
73
+ chatCompletion: {
74
+ unsupportedUserConfig: [
75
+ 'reasoningBudget'
76
+ ],
77
+ buildChatCompletionParams: buildDoubaoChatCompletionParams,
78
+ useReasoningAsContentFallback: true
79
+ },
80
+ locate: {
81
+ element: {
82
+ resultFormat: {
83
+ coordinates: doubaoBboxCoordinatesMeta,
84
+ parseRawLocateValue: parseDoubaoRawLocateValue
85
+ }
86
+ }
87
+ }
88
+ };
89
+ const doubaoAdapters = {
90
+ 'doubao-vision': doubaoVisionAdapter,
91
+ 'doubao-seed': doubaoVisionAdapter
92
+ };
93
+ export { doubaoAdapters, parseDoubaoRawLocateValue };
94
+
95
+ //# sourceMappingURL=doubao.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-model/models/doubao.mjs","sources":["../../../../src/ai-model/models/doubao.ts"],"sourcesContent":["import type { TModelFamily } from '@midscene/shared/env';\nimport type {\n ChatCompletionCallContext,\n ChatCompletionParamsResult,\n ModelAdapterDefinition,\n} from '../model-adapter/types';\nimport { parseModelResponseJson } from '../shared/json';\nimport {\n type LocateResultValue,\n createLocateResultValue,\n unwrapCoordinateListLikeInput,\n} from '../shared/model-locate-result';\n\nconst doubaoBboxCoordinatesMeta = {\n shape: 'bbox',\n order: 'xy',\n normalizedBy: 1000,\n} as const;\nconst doubaoPointCoordinatesMeta = {\n shape: 'point',\n order: 'xy',\n normalizedBy: 1000,\n} as const;\n\n/**\n * Finds a sequence of numbers separated by punctuation or whitespace in a\n * string. Separators cannot be letters, which prevents extracting the `2` in\n * a mixed alphanumeric token such as `bbox_2d` as a coordinate.\n */\nconst coordinateSequencePattern =\n /(?:^|[^a-zA-Z0-9])(\\d+(?:[^a-zA-Z0-9]+\\d+)+)(?=$|[^a-zA-Z0-9])/g;\n\nfunction isFourFiniteNumberArray(input: unknown): input is number[] {\n return (\n Array.isArray(input) &&\n input.length === 4 &&\n input.every((value) => typeof value === 'number' && Number.isFinite(value))\n );\n}\n\nfunction parseNumbersFromUnexpectedBboxStructure(input: unknown): number[] {\n const serialized = JSON.stringify(input);\n if (!serialized) {\n return [];\n }\n\n const sequences = Array.from(\n serialized.matchAll(coordinateSequencePattern),\n (match) => match[1].match(/\\d+/g)?.map(Number) ?? [],\n );\n const longestLength = Math.max(\n 0,\n ...sequences.map((sequence) => sequence.length),\n );\n const longestSequences = sequences.filter(\n (sequence) => sequence.length === longestLength,\n );\n\n if (longestSequences.length !== 1) {\n return [];\n }\n\n return longestSequences[0];\n}\n\nexport function parseDoubaoRawLocateValue(input: unknown): LocateResultValue {\n const bbox = unwrapCoordinateListLikeInput(input as any);\n const bboxList = isFourFiniteNumberArray(bbox)\n ? bbox\n : parseNumbersFromUnexpectedBboxStructure(bbox);\n\n if (bboxList.length === 4 || bboxList.length === 5) {\n return createLocateResultValue(doubaoBboxCoordinatesMeta, [\n bboxList[0],\n bboxList[1],\n bboxList[2],\n bboxList[3],\n ]);\n }\n\n if (\n bboxList.length === 6 ||\n bboxList.length === 2 ||\n bboxList.length === 3 ||\n bboxList.length === 7\n ) {\n return createLocateResultValue(doubaoPointCoordinatesMeta, [\n bboxList[0],\n bboxList[1],\n ]);\n }\n\n if (bboxList.length === 8) {\n return createLocateResultValue(doubaoBboxCoordinatesMeta, [\n bboxList[0],\n bboxList[1],\n bboxList[4],\n bboxList[5],\n ]);\n }\n\n const msg = `invalid bbox data for doubao-vision mode: ${JSON.stringify(bbox)} `;\n throw new Error(msg);\n}\n\nconst buildDoubaoChatCompletionParams = (\n input: ChatCompletionCallContext,\n): ChatCompletionParamsResult => {\n const { midsceneDefaults, userConfig } = input;\n const { reasoningEnabled, reasoningEffort } = userConfig;\n const commonOverrideConfig: Record<string, unknown> = {};\n\n if (userConfig.temperature !== undefined) {\n commonOverrideConfig.temperature = userConfig.temperature;\n }\n\n // Doubao Chat Completions JSON mode:\n // https://docs.volcengine.com/docs/82379/1568221?lang=zh\n if (\n userConfig.responseFormat !== 'none' &&\n input.expectedJsonObjectResponse\n ) {\n commonOverrideConfig.response_format = { type: 'json_object' };\n }\n\n const modelSpecificConfig: Record<string, unknown> = {};\n\n if (reasoningEnabled !== 'default') {\n modelSpecificConfig.thinking = {\n type: (reasoningEnabled ?? false) ? 'enabled' : 'disabled',\n };\n if (reasoningEffort) {\n modelSpecificConfig.reasoning_effort = reasoningEffort;\n }\n }\n\n return {\n config: {\n ...midsceneDefaults,\n ...commonOverrideConfig,\n ...modelSpecificConfig,\n },\n };\n};\n\nconst doubaoVisionAdapter: ModelAdapterDefinition = {\n jsonParser: parseModelResponseJson,\n chatCompletion: {\n unsupportedUserConfig: ['reasoningBudget'],\n buildChatCompletionParams: buildDoubaoChatCompletionParams,\n useReasoningAsContentFallback: true,\n },\n locate: {\n element: {\n resultFormat: {\n coordinates: doubaoBboxCoordinatesMeta,\n parseRawLocateValue: parseDoubaoRawLocateValue,\n },\n },\n },\n};\n\nexport const doubaoAdapters = {\n 'doubao-vision': doubaoVisionAdapter,\n 'doubao-seed': doubaoVisionAdapter,\n} satisfies Pick<\n Record<TModelFamily, ModelAdapterDefinition>,\n 'doubao-vision' | 'doubao-seed'\n>;\n"],"names":["doubaoBboxCoordinatesMeta","doubaoPointCoordinatesMeta","coordinateSequencePattern","isFourFiniteNumberArray","input","Array","value","Number","parseNumbersFromUnexpectedBboxStructure","serialized","JSON","sequences","match","longestLength","Math","sequence","longestSequences","parseDoubaoRawLocateValue","bbox","unwrapCoordinateListLikeInput","bboxList","createLocateResultValue","msg","Error","buildDoubaoChatCompletionParams","midsceneDefaults","userConfig","reasoningEnabled","reasoningEffort","commonOverrideConfig","undefined","modelSpecificConfig","doubaoVisionAdapter","parseModelResponseJson","doubaoAdapters"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { ResolvedModelAdapter } from "../model-adapter/resolve.mjs";
3
3
  import { autoGlmAdapters } from "./auto-glm/adapter.mjs";
4
4
  import { deepSeekAdapters } from "./deepseek/adapter.mjs";
5
5
  import { defaultOpenAICompatibleAdapterConfig } from "./default.mjs";
6
- import { doubaoAdapters } from "./doubao/adapter.mjs";
6
+ import { doubaoAdapters } from "./doubao.mjs";
7
7
  import { geminiAdapters } from "./gemini.mjs";
8
8
  import { glmAdapters } from "./glm.mjs";
9
9
  import { gptAdapters } from "./gpt.mjs";
@@ -1 +1 @@
1
- {"version":3,"file":"ai-model/models/registry.mjs","sources":["../../../../src/ai-model/models/registry.ts"],"sourcesContent":["import type { IModelConfig, TModelFamily } from '@midscene/shared/env';\nimport { getDebug } from '@midscene/shared/logger';\nimport { ResolvedModelAdapter } from '../model-adapter/resolve';\nimport type {\n ModelAdapter,\n ModelAdapterDefinition,\n ModelRuntime,\n} from '../model-adapter/types';\nimport { autoGlmAdapters } from './auto-glm/adapter';\nimport { deepSeekAdapters } from './deepseek/adapter';\nimport { defaultOpenAICompatibleAdapterConfig } from './default';\nimport { doubaoAdapters } from './doubao/adapter';\nimport { geminiAdapters } from './gemini';\nimport { glmAdapters } from './glm';\nimport { gptAdapters } from './gpt';\nimport { kimiAdapters } from './kimi';\nimport { mimoAdapters } from './mimo';\nimport { qwenAdapters } from './qwen';\nimport { uiTarsAdapters } from './ui-tars/adapter';\n\nexport const MODEL_ADAPTER_CONFIGS = {\n ...qwenAdapters,\n ...deepSeekAdapters,\n ...doubaoAdapters,\n ...geminiAdapters,\n ...uiTarsAdapters,\n ...glmAdapters,\n ...autoGlmAdapters,\n ...gptAdapters,\n ...kimiAdapters,\n ...mimoAdapters,\n} satisfies Record<TModelFamily, ModelAdapterDefinition>;\n\ntype ModelAdapterCacheKey = TModelFamily | 'default';\n\nconst modelAdapterCache = new Map<ModelAdapterCacheKey, ModelAdapter>();\nconst debugModelAdapter = getDebug('ai:model-adapter');\n\nfunction debugAdapterUnsupportedUserConfig(\n modelFamily: ModelAdapterCacheKey,\n adapter: ModelAdapter,\n): void {\n if (adapter.chatCompletion.unsupportedUserConfig.length === 0) {\n return;\n }\n\n debugModelAdapter(\n `model adapter \"${modelFamily}\" unsupportedUserConfig: ${JSON.stringify(\n adapter.chatCompletion.unsupportedUserConfig,\n )}`,\n );\n}\n\nexport function getModelAdapter(modelFamily?: TModelFamily): ModelAdapter {\n const cacheKey: ModelAdapterCacheKey = modelFamily ?? 'default';\n let adapter = modelAdapterCache.get(cacheKey);\n if (adapter) {\n return adapter;\n }\n\n const config = modelFamily\n ? MODEL_ADAPTER_CONFIGS[modelFamily]\n : defaultOpenAICompatibleAdapterConfig;\n if (!config) {\n throw new Error(\n `No model adapter registered for modelFamily: ${modelFamily}`,\n );\n }\n\n adapter = new ResolvedModelAdapter(config, cacheKey);\n modelAdapterCache.set(cacheKey, adapter);\n debugAdapterUnsupportedUserConfig(cacheKey, adapter);\n\n return adapter;\n}\n\nexport function getModelRuntime(config: IModelConfig): ModelRuntime {\n return {\n config,\n adapter: getModelAdapter(config.modelFamily),\n };\n}\n"],"names":["MODEL_ADAPTER_CONFIGS","qwenAdapters","deepSeekAdapters","doubaoAdapters","geminiAdapters","uiTarsAdapters","glmAdapters","autoGlmAdapters","gptAdapters","kimiAdapters","mimoAdapters","modelAdapterCache","Map","debugModelAdapter","getDebug","debugAdapterUnsupportedUserConfig","modelFamily","adapter","JSON","getModelAdapter","cacheKey","config","defaultOpenAICompatibleAdapterConfig","Error","ResolvedModelAdapter","getModelRuntime"],"mappings":";;;;;;;;;;;;;AAoBO,MAAMA,wBAAwB;IACnC,GAAGC,YAAY;IACf,GAAGC,gBAAgB;IACnB,GAAGC,cAAc;IACjB,GAAGC,cAAc;IACjB,GAAGC,cAAc;IACjB,GAAGC,WAAW;IACd,GAAGC,eAAe;IAClB,GAAGC,WAAW;IACd,GAAGC,YAAY;IACf,GAAGC,YAAY;AACjB;AAIA,MAAMC,oBAAoB,IAAIC;AAC9B,MAAMC,oBAAoBC,SAAS;AAEnC,SAASC,kCACPC,WAAiC,EACjCC,OAAqB;IAErB,IAAIA,AAAwD,MAAxDA,QAAQ,cAAc,CAAC,qBAAqB,CAAC,MAAM,EACrD;IAGFJ,kBACE,CAAC,eAAe,EAAEG,YAAY,yBAAyB,EAAEE,KAAK,SAAS,CACrED,QAAQ,cAAc,CAAC,qBAAqB,GAC3C;AAEP;AAEO,SAASE,gBAAgBH,WAA0B;IACxD,MAAMI,WAAiCJ,eAAe;IACtD,IAAIC,UAAUN,kBAAkB,GAAG,CAACS;IACpC,IAAIH,SACF,OAAOA;IAGT,MAAMI,SAASL,cACXhB,qBAAqB,CAACgB,YAAY,GAClCM;IACJ,IAAI,CAACD,QACH,MAAM,IAAIE,MACR,CAAC,6CAA6C,EAAEP,aAAa;IAIjEC,UAAU,IAAIO,qBAAqBH,QAAQD;IAC3CT,kBAAkB,GAAG,CAACS,UAAUH;IAChCF,kCAAkCK,UAAUH;IAE5C,OAAOA;AACT;AAEO,SAASQ,gBAAgBJ,MAAoB;IAClD,OAAO;QACLA;QACA,SAASF,gBAAgBE,OAAO,WAAW;IAC7C;AACF"}
1
+ {"version":3,"file":"ai-model/models/registry.mjs","sources":["../../../../src/ai-model/models/registry.ts"],"sourcesContent":["import type { IModelConfig, TModelFamily } from '@midscene/shared/env';\nimport { getDebug } from '@midscene/shared/logger';\nimport { ResolvedModelAdapter } from '../model-adapter/resolve';\nimport type {\n ModelAdapter,\n ModelAdapterDefinition,\n ModelRuntime,\n} from '../model-adapter/types';\nimport { autoGlmAdapters } from './auto-glm/adapter';\nimport { deepSeekAdapters } from './deepseek/adapter';\nimport { defaultOpenAICompatibleAdapterConfig } from './default';\nimport { doubaoAdapters } from './doubao';\nimport { geminiAdapters } from './gemini';\nimport { glmAdapters } from './glm';\nimport { gptAdapters } from './gpt';\nimport { kimiAdapters } from './kimi';\nimport { mimoAdapters } from './mimo';\nimport { qwenAdapters } from './qwen';\nimport { uiTarsAdapters } from './ui-tars/adapter';\n\nexport const MODEL_ADAPTER_CONFIGS = {\n ...qwenAdapters,\n ...deepSeekAdapters,\n ...doubaoAdapters,\n ...geminiAdapters,\n ...uiTarsAdapters,\n ...glmAdapters,\n ...autoGlmAdapters,\n ...gptAdapters,\n ...kimiAdapters,\n ...mimoAdapters,\n} satisfies Record<TModelFamily, ModelAdapterDefinition>;\n\ntype ModelAdapterCacheKey = TModelFamily | 'default';\n\nconst modelAdapterCache = new Map<ModelAdapterCacheKey, ModelAdapter>();\nconst debugModelAdapter = getDebug('ai:model-adapter');\n\nfunction debugAdapterUnsupportedUserConfig(\n modelFamily: ModelAdapterCacheKey,\n adapter: ModelAdapter,\n): void {\n if (adapter.chatCompletion.unsupportedUserConfig.length === 0) {\n return;\n }\n\n debugModelAdapter(\n `model adapter \"${modelFamily}\" unsupportedUserConfig: ${JSON.stringify(\n adapter.chatCompletion.unsupportedUserConfig,\n )}`,\n );\n}\n\nexport function getModelAdapter(modelFamily?: TModelFamily): ModelAdapter {\n const cacheKey: ModelAdapterCacheKey = modelFamily ?? 'default';\n let adapter = modelAdapterCache.get(cacheKey);\n if (adapter) {\n return adapter;\n }\n\n const config = modelFamily\n ? MODEL_ADAPTER_CONFIGS[modelFamily]\n : defaultOpenAICompatibleAdapterConfig;\n if (!config) {\n throw new Error(\n `No model adapter registered for modelFamily: ${modelFamily}`,\n );\n }\n\n adapter = new ResolvedModelAdapter(config, cacheKey);\n modelAdapterCache.set(cacheKey, adapter);\n debugAdapterUnsupportedUserConfig(cacheKey, adapter);\n\n return adapter;\n}\n\nexport function getModelRuntime(config: IModelConfig): ModelRuntime {\n return {\n config,\n adapter: getModelAdapter(config.modelFamily),\n };\n}\n"],"names":["MODEL_ADAPTER_CONFIGS","qwenAdapters","deepSeekAdapters","doubaoAdapters","geminiAdapters","uiTarsAdapters","glmAdapters","autoGlmAdapters","gptAdapters","kimiAdapters","mimoAdapters","modelAdapterCache","Map","debugModelAdapter","getDebug","debugAdapterUnsupportedUserConfig","modelFamily","adapter","JSON","getModelAdapter","cacheKey","config","defaultOpenAICompatibleAdapterConfig","Error","ResolvedModelAdapter","getModelRuntime"],"mappings":";;;;;;;;;;;;;AAoBO,MAAMA,wBAAwB;IACnC,GAAGC,YAAY;IACf,GAAGC,gBAAgB;IACnB,GAAGC,cAAc;IACjB,GAAGC,cAAc;IACjB,GAAGC,cAAc;IACjB,GAAGC,WAAW;IACd,GAAGC,eAAe;IAClB,GAAGC,WAAW;IACd,GAAGC,YAAY;IACf,GAAGC,YAAY;AACjB;AAIA,MAAMC,oBAAoB,IAAIC;AAC9B,MAAMC,oBAAoBC,SAAS;AAEnC,SAASC,kCACPC,WAAiC,EACjCC,OAAqB;IAErB,IAAIA,AAAwD,MAAxDA,QAAQ,cAAc,CAAC,qBAAqB,CAAC,MAAM,EACrD;IAGFJ,kBACE,CAAC,eAAe,EAAEG,YAAY,yBAAyB,EAAEE,KAAK,SAAS,CACrED,QAAQ,cAAc,CAAC,qBAAqB,GAC3C;AAEP;AAEO,SAASE,gBAAgBH,WAA0B;IACxD,MAAMI,WAAiCJ,eAAe;IACtD,IAAIC,UAAUN,kBAAkB,GAAG,CAACS;IACpC,IAAIH,SACF,OAAOA;IAGT,MAAMI,SAASL,cACXhB,qBAAqB,CAACgB,YAAY,GAClCM;IACJ,IAAI,CAACD,QACH,MAAM,IAAIE,MACR,CAAC,6CAA6C,EAAEP,aAAa;IAIjEC,UAAU,IAAIO,qBAAqBH,QAAQD;IAC3CT,kBAAkB,GAAG,CAACS,UAAUH;IAChCF,kCAAkCK,UAAUH;IAE5C,OAAOA;AACT;AAEO,SAASQ,gBAAgBJ,MAAoB;IAClD,OAAO;QACLA;QACA,SAASF,gBAAgBE,OAAO,WAAW;IAC7C;AACF"}