@midscene/core 1.16.5 → 1.17.0

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 (252) hide show
  1. package/dist/es/agent/agent.mjs +11 -11
  2. package/dist/es/agent/agent.mjs.map +1 -1
  3. package/dist/es/agent/insight.mjs.map +1 -1
  4. package/dist/es/agent/tasks.mjs +72 -39
  5. package/dist/es/agent/tasks.mjs.map +1 -1
  6. package/dist/es/agent/utils.mjs +1 -1
  7. package/dist/es/ai-model/connectivity/run-connectivity-test.mjs +27 -22
  8. package/dist/es/ai-model/connectivity/run-connectivity-test.mjs.map +1 -1
  9. package/dist/es/ai-model/index.mjs +2 -2
  10. package/dist/es/ai-model/model-adapter/resolve.mjs +4 -2
  11. package/dist/es/ai-model/model-adapter/resolve.mjs.map +1 -1
  12. package/dist/es/ai-model/models/jev/adapter.mjs +6 -110
  13. package/dist/es/ai-model/models/jev/adapter.mjs.map +1 -1
  14. package/dist/es/ai-model/models/jev/boolean.mjs +48 -0
  15. package/dist/es/ai-model/models/jev/boolean.mjs.map +1 -0
  16. package/dist/es/ai-model/models/jev/image.mjs +39 -36
  17. package/dist/es/ai-model/models/jev/image.mjs.map +1 -1
  18. package/dist/es/ai-model/models/jev/locate.mjs +48 -0
  19. package/dist/es/ai-model/models/jev/locate.mjs.map +1 -0
  20. package/dist/es/ai-model/models/jev/planning-action.mjs +35 -0
  21. package/dist/es/ai-model/models/jev/planning-action.mjs.map +1 -0
  22. package/dist/es/ai-model/models/jev/planning-context.mjs +38 -0
  23. package/dist/es/ai-model/models/jev/planning-context.mjs.map +1 -0
  24. package/dist/es/ai-model/models/jev/planning-decision.mjs +68 -0
  25. package/dist/es/ai-model/models/jev/planning-decision.mjs.map +1 -0
  26. package/dist/es/ai-model/models/jev/planning.mjs +19 -131
  27. package/dist/es/ai-model/models/jev/planning.mjs.map +1 -1
  28. package/dist/es/ai-model/models/model-fallback.mjs +28 -0
  29. package/dist/es/ai-model/models/model-fallback.mjs.map +1 -0
  30. package/dist/es/ai-model/service-caller/call-ai.mjs +27 -24
  31. package/dist/es/ai-model/service-caller/call-ai.mjs.map +1 -1
  32. package/dist/es/ai-model/service-caller/codex/call-codex.mjs.map +1 -1
  33. package/dist/es/ai-model/service-caller/index.mjs +2 -2
  34. package/dist/es/ai-model/service-caller/model-call.mjs +3 -3
  35. package/dist/es/ai-model/service-caller/model-call.mjs.map +1 -1
  36. package/dist/es/ai-model/service-caller/openai/call-openai.mjs +1 -1
  37. package/dist/es/ai-model/service-caller/openai/call-openai.mjs.map +1 -1
  38. package/dist/es/ai-model/service-caller/openai/chat-completion/chat-completion.mjs.map +1 -1
  39. package/dist/es/ai-model/service-caller/openai/openai-client.mjs.map +1 -1
  40. package/dist/es/ai-model/service-caller/openai/responses/responses.mjs.map +1 -1
  41. package/dist/es/ai-model/service-caller/system-one/call-system-one.mjs +69 -0
  42. package/dist/es/ai-model/service-caller/system-one/call-system-one.mjs.map +1 -0
  43. package/dist/es/ai-model/service-caller/system-one/index.mjs +3 -0
  44. package/dist/es/ai-model/service-caller/system-one/prepare-system-one.mjs +44 -0
  45. package/dist/es/ai-model/service-caller/system-one/prepare-system-one.mjs.map +1 -0
  46. package/dist/es/ai-model/service-caller/system-one/schema.mjs +32 -0
  47. package/dist/es/ai-model/service-caller/system-one/schema.mjs.map +1 -0
  48. package/dist/es/ai-model/service-caller/system-one/utils.mjs +34 -0
  49. package/dist/es/ai-model/service-caller/system-one/utils.mjs.map +1 -0
  50. package/dist/es/ai-model/service-caller/utils.mjs +2 -2
  51. package/dist/es/ai-model/service-caller/utils.mjs.map +1 -1
  52. package/dist/es/ai-model/shared/model-locate-result/factory.mjs +7 -3
  53. package/dist/es/ai-model/shared/model-locate-result/factory.mjs.map +1 -1
  54. package/dist/es/ai-model/shared/model-locate-result/pixel-mapper.mjs +10 -4
  55. package/dist/es/ai-model/shared/model-locate-result/pixel-mapper.mjs.map +1 -1
  56. package/dist/es/ai-model/shared/model-locate-result/types.mjs.map +1 -1
  57. package/dist/es/ai-model/shared/model-locate-result/validation.mjs +4 -0
  58. package/dist/es/ai-model/shared/model-locate-result/validation.mjs.map +1 -1
  59. package/dist/es/ai-model/workflows/grounding/locate.mjs +2 -2
  60. package/dist/es/ai-model/workflows/grounding/locate.mjs.map +1 -1
  61. package/dist/es/ai-model/workflows/grounding/section-locate.mjs +2 -2
  62. package/dist/es/ai-model/workflows/grounding/section-locate.mjs.map +1 -1
  63. package/dist/es/ai-model/workflows/insight/boolean.mjs +1 -1
  64. package/dist/es/ai-model/workflows/insight/boolean.mjs.map +1 -1
  65. package/dist/es/ai-model/workflows/insight/extraction.mjs +3 -3
  66. package/dist/es/ai-model/workflows/insight/extraction.mjs.map +1 -1
  67. package/dist/es/ai-model/workflows/planning/standard-planning.mjs +4 -3
  68. package/dist/es/ai-model/workflows/planning/standard-planning.mjs.map +1 -1
  69. package/dist/es/ai-model/workflows/recorder-generation/playwright.mjs +2 -2
  70. package/dist/es/ai-model/workflows/recorder-generation/playwright.mjs.map +1 -1
  71. package/dist/es/ai-model/workflows/recorder-generation/yaml.mjs +2 -2
  72. package/dist/es/ai-model/workflows/recorder-generation/yaml.mjs.map +1 -1
  73. package/dist/es/device/index.mjs +7 -0
  74. package/dist/es/device/index.mjs.map +1 -1
  75. package/dist/es/report-html-template.mjs +1 -1
  76. package/dist/es/service/index.mjs +2 -1
  77. package/dist/es/service/index.mjs.map +1 -1
  78. package/dist/es/types.mjs.map +1 -1
  79. package/dist/es/utils.mjs +1 -1
  80. package/dist/lib/agent/agent.js +11 -11
  81. package/dist/lib/agent/agent.js.map +1 -1
  82. package/dist/lib/agent/insight.js.map +1 -1
  83. package/dist/lib/agent/tasks.js +72 -39
  84. package/dist/lib/agent/tasks.js.map +1 -1
  85. package/dist/lib/agent/utils.js +1 -1
  86. package/dist/lib/ai-model/connectivity/run-connectivity-test.js +27 -22
  87. package/dist/lib/ai-model/connectivity/run-connectivity-test.js.map +1 -1
  88. package/dist/lib/ai-model/index.js +6 -3
  89. package/dist/lib/ai-model/model-adapter/resolve.js +4 -2
  90. package/dist/lib/ai-model/model-adapter/resolve.js.map +1 -1
  91. package/dist/lib/ai-model/models/jev/adapter.js +6 -110
  92. package/dist/lib/ai-model/models/jev/adapter.js.map +1 -1
  93. package/dist/lib/ai-model/models/jev/boolean.js +82 -0
  94. package/dist/lib/ai-model/models/jev/boolean.js.map +1 -0
  95. package/dist/lib/ai-model/models/jev/image.js +41 -35
  96. package/dist/lib/ai-model/models/jev/image.js.map +1 -1
  97. package/dist/lib/ai-model/models/jev/locate.js +82 -0
  98. package/dist/lib/ai-model/models/jev/locate.js.map +1 -0
  99. package/dist/lib/ai-model/models/jev/planning-action.js +69 -0
  100. package/dist/lib/ai-model/models/jev/planning-action.js.map +1 -0
  101. package/dist/lib/ai-model/models/jev/planning-context.js +72 -0
  102. package/dist/lib/ai-model/models/jev/planning-context.js.map +1 -0
  103. package/dist/lib/ai-model/models/jev/planning-decision.js +102 -0
  104. package/dist/lib/ai-model/models/jev/planning-decision.js.map +1 -0
  105. package/dist/lib/ai-model/models/jev/planning.js +19 -131
  106. package/dist/lib/ai-model/models/jev/planning.js.map +1 -1
  107. package/dist/lib/ai-model/models/{task-routing.js → model-fallback.js} +11 -11
  108. package/dist/lib/ai-model/models/model-fallback.js.map +1 -0
  109. package/dist/lib/ai-model/service-caller/call-ai.js +32 -26
  110. package/dist/lib/ai-model/service-caller/call-ai.js.map +1 -1
  111. package/dist/lib/ai-model/service-caller/codex/call-codex.js.map +1 -1
  112. package/dist/lib/ai-model/service-caller/index.js +6 -3
  113. package/dist/lib/ai-model/service-caller/model-call.js +2 -2
  114. package/dist/lib/ai-model/service-caller/model-call.js.map +1 -1
  115. package/dist/lib/ai-model/service-caller/openai/call-openai.js +1 -1
  116. package/dist/lib/ai-model/service-caller/openai/call-openai.js.map +1 -1
  117. package/dist/lib/ai-model/service-caller/openai/chat-completion/chat-completion.js.map +1 -1
  118. package/dist/lib/ai-model/service-caller/openai/openai-client.js.map +1 -1
  119. package/dist/lib/ai-model/service-caller/openai/responses/responses.js.map +1 -1
  120. package/dist/lib/ai-model/service-caller/system-one/call-system-one.js +103 -0
  121. package/dist/lib/ai-model/service-caller/system-one/call-system-one.js.map +1 -0
  122. package/dist/lib/ai-model/service-caller/system-one/index.js +42 -0
  123. package/dist/lib/ai-model/service-caller/system-one/index.js.map +1 -0
  124. package/dist/lib/ai-model/service-caller/system-one/prepare-system-one.js +78 -0
  125. package/dist/lib/ai-model/service-caller/system-one/prepare-system-one.js.map +1 -0
  126. package/dist/lib/ai-model/service-caller/system-one/schema.js +69 -0
  127. package/dist/lib/ai-model/service-caller/system-one/schema.js.map +1 -0
  128. package/dist/lib/ai-model/service-caller/system-one/utils.js +68 -0
  129. package/dist/lib/ai-model/service-caller/system-one/utils.js.map +1 -0
  130. package/dist/lib/ai-model/service-caller/utils.js +2 -2
  131. package/dist/lib/ai-model/service-caller/utils.js.map +1 -1
  132. package/dist/lib/ai-model/shared/model-locate-result/factory.js +7 -3
  133. package/dist/lib/ai-model/shared/model-locate-result/factory.js.map +1 -1
  134. package/dist/lib/ai-model/shared/model-locate-result/pixel-mapper.js +10 -4
  135. package/dist/lib/ai-model/shared/model-locate-result/pixel-mapper.js.map +1 -1
  136. package/dist/lib/ai-model/shared/model-locate-result/types.js.map +1 -1
  137. package/dist/lib/ai-model/shared/model-locate-result/validation.js +4 -0
  138. package/dist/lib/ai-model/shared/model-locate-result/validation.js.map +1 -1
  139. package/dist/lib/ai-model/workflows/grounding/locate.js +1 -1
  140. package/dist/lib/ai-model/workflows/grounding/locate.js.map +1 -1
  141. package/dist/lib/ai-model/workflows/grounding/section-locate.js +1 -1
  142. package/dist/lib/ai-model/workflows/grounding/section-locate.js.map +1 -1
  143. package/dist/lib/ai-model/workflows/insight/boolean.js +1 -1
  144. package/dist/lib/ai-model/workflows/insight/boolean.js.map +1 -1
  145. package/dist/lib/ai-model/workflows/insight/extraction.js +2 -2
  146. package/dist/lib/ai-model/workflows/insight/extraction.js.map +1 -1
  147. package/dist/lib/ai-model/workflows/planning/standard-planning.js +3 -2
  148. package/dist/lib/ai-model/workflows/planning/standard-planning.js.map +1 -1
  149. package/dist/lib/ai-model/workflows/recorder-generation/playwright.js +1 -1
  150. package/dist/lib/ai-model/workflows/recorder-generation/playwright.js.map +1 -1
  151. package/dist/lib/ai-model/workflows/recorder-generation/yaml.js +1 -1
  152. package/dist/lib/ai-model/workflows/recorder-generation/yaml.js.map +1 -1
  153. package/dist/lib/device/index.js +7 -0
  154. package/dist/lib/device/index.js.map +1 -1
  155. package/dist/lib/report-html-template.js +1 -1
  156. package/dist/lib/service/index.js +2 -1
  157. package/dist/lib/service/index.js.map +1 -1
  158. package/dist/lib/types.js.map +1 -1
  159. package/dist/lib/utils.js +1 -1
  160. package/dist/types/agent/agent.d.ts.map +1 -1
  161. package/dist/types/agent/insight.d.ts +2 -2
  162. package/dist/types/agent/insight.d.ts.map +1 -1
  163. package/dist/types/agent/tasks.d.ts.map +1 -1
  164. package/dist/types/ai-model/connectivity/run-connectivity-test.d.ts.map +1 -1
  165. package/dist/types/ai-model/index.d.ts +1 -1
  166. package/dist/types/ai-model/index.d.ts.map +1 -1
  167. package/dist/types/ai-model/model-adapter/resolve.d.ts +2 -1
  168. package/dist/types/ai-model/model-adapter/resolve.d.ts.map +1 -1
  169. package/dist/types/ai-model/model-adapter/types.d.ts +8 -5
  170. package/dist/types/ai-model/model-adapter/types.d.ts.map +1 -1
  171. package/dist/types/ai-model/models/gpt.d.ts +2 -2
  172. package/dist/types/ai-model/models/jev/adapter.d.ts +4 -5
  173. package/dist/types/ai-model/models/jev/adapter.d.ts.map +1 -1
  174. package/dist/types/ai-model/models/jev/boolean.d.ts +3 -0
  175. package/dist/types/ai-model/models/jev/boolean.d.ts.map +1 -0
  176. package/dist/types/ai-model/models/jev/image.d.ts +11 -11
  177. package/dist/types/ai-model/models/jev/image.d.ts.map +1 -1
  178. package/dist/types/ai-model/models/jev/locate.d.ts +3 -0
  179. package/dist/types/ai-model/models/jev/locate.d.ts.map +1 -0
  180. package/dist/types/ai-model/models/jev/planning-action.d.ts +6 -0
  181. package/dist/types/ai-model/models/jev/planning-action.d.ts.map +1 -0
  182. package/dist/types/ai-model/models/jev/planning-context.d.ts +23 -0
  183. package/dist/types/ai-model/models/jev/planning-context.d.ts.map +1 -0
  184. package/dist/types/ai-model/models/jev/planning-decision.d.ts +35 -0
  185. package/dist/types/ai-model/models/jev/planning-decision.d.ts.map +1 -0
  186. package/dist/types/ai-model/models/jev/planning.d.ts.map +1 -1
  187. package/dist/types/ai-model/models/model-fallback.d.ts +6 -0
  188. package/dist/types/ai-model/models/model-fallback.d.ts.map +1 -0
  189. package/dist/types/ai-model/models/registry.d.ts +4 -3
  190. package/dist/types/ai-model/models/registry.d.ts.map +1 -1
  191. package/dist/types/ai-model/service-caller/call-ai.d.ts +3 -1
  192. package/dist/types/ai-model/service-caller/call-ai.d.ts.map +1 -1
  193. package/dist/types/ai-model/service-caller/codex/call-codex.d.ts +5 -3
  194. package/dist/types/ai-model/service-caller/codex/call-codex.d.ts.map +1 -1
  195. package/dist/types/ai-model/service-caller/index.d.ts +1 -1
  196. package/dist/types/ai-model/service-caller/index.d.ts.map +1 -1
  197. package/dist/types/ai-model/service-caller/model-call.d.ts +2 -2
  198. package/dist/types/ai-model/service-caller/model-call.d.ts.map +1 -1
  199. package/dist/types/ai-model/service-caller/openai/call-openai.d.ts +2 -2
  200. package/dist/types/ai-model/service-caller/openai/call-openai.d.ts.map +1 -1
  201. package/dist/types/ai-model/service-caller/openai/chat-completion/chat-completion.d.ts +4 -2
  202. package/dist/types/ai-model/service-caller/openai/chat-completion/chat-completion.d.ts.map +1 -1
  203. package/dist/types/ai-model/service-caller/openai/responses/responses.d.ts +4 -2
  204. package/dist/types/ai-model/service-caller/openai/responses/responses.d.ts.map +1 -1
  205. package/dist/types/ai-model/service-caller/system-one/call-system-one.d.ts +4 -0
  206. package/dist/types/ai-model/service-caller/system-one/call-system-one.d.ts.map +1 -0
  207. package/dist/types/ai-model/service-caller/system-one/index.d.ts +3 -0
  208. package/dist/types/ai-model/service-caller/system-one/index.d.ts.map +1 -0
  209. package/dist/types/ai-model/service-caller/system-one/prepare-system-one.d.ts +21 -0
  210. package/dist/types/ai-model/service-caller/system-one/prepare-system-one.d.ts.map +1 -0
  211. package/dist/types/ai-model/service-caller/{system-one.d.ts → system-one/schema.d.ts} +1 -22
  212. package/dist/types/ai-model/service-caller/system-one/schema.d.ts.map +1 -0
  213. package/dist/types/ai-model/service-caller/system-one/utils.d.ts +6 -0
  214. package/dist/types/ai-model/service-caller/system-one/utils.d.ts.map +1 -0
  215. package/dist/types/ai-model/service-caller/types.d.ts +0 -3
  216. package/dist/types/ai-model/service-caller/types.d.ts.map +1 -1
  217. package/dist/types/ai-model/service-caller/utils.d.ts +3 -3
  218. package/dist/types/ai-model/shared/model-locate-result/factory.d.ts.map +1 -1
  219. package/dist/types/ai-model/shared/model-locate-result/index.d.ts +1 -1
  220. package/dist/types/ai-model/shared/model-locate-result/index.d.ts.map +1 -1
  221. package/dist/types/ai-model/shared/model-locate-result/pixel-mapper.d.ts +3 -3
  222. package/dist/types/ai-model/shared/model-locate-result/pixel-mapper.d.ts.map +1 -1
  223. package/dist/types/ai-model/shared/model-locate-result/types.d.ts +4 -0
  224. package/dist/types/ai-model/shared/model-locate-result/types.d.ts.map +1 -1
  225. package/dist/types/ai-model/shared/model-locate-result/validation.d.ts.map +1 -1
  226. package/dist/types/ai-model/workflows/grounding/locate.d.ts.map +1 -1
  227. package/dist/types/ai-model/workflows/grounding/section-locate.d.ts.map +1 -1
  228. package/dist/types/ai-model/workflows/insight/boolean.d.ts.map +1 -1
  229. package/dist/types/ai-model/workflows/insight/extraction.d.ts +2 -0
  230. package/dist/types/ai-model/workflows/insight/extraction.d.ts.map +1 -1
  231. package/dist/types/ai-model/workflows/planning/standard-planning.d.ts.map +1 -1
  232. package/dist/types/ai-model/workflows/planning/types.d.ts +2 -1
  233. package/dist/types/ai-model/workflows/planning/types.d.ts.map +1 -1
  234. package/dist/types/ai-model/workflows/recorder-generation/playwright.d.ts.map +1 -1
  235. package/dist/types/ai-model/workflows/recorder-generation/yaml.d.ts.map +1 -1
  236. package/dist/types/device/index.d.ts +1 -0
  237. package/dist/types/device/index.d.ts.map +1 -1
  238. package/dist/types/service/index.d.ts +1 -1
  239. package/dist/types/service/index.d.ts.map +1 -1
  240. package/dist/types/types.d.ts +14 -3
  241. package/dist/types/types.d.ts.map +1 -1
  242. package/package.json +2 -2
  243. package/dist/es/ai-model/models/task-routing.mjs +0 -28
  244. package/dist/es/ai-model/models/task-routing.mjs.map +0 -1
  245. package/dist/es/ai-model/service-caller/system-one.mjs +0 -163
  246. package/dist/es/ai-model/service-caller/system-one.mjs.map +0 -1
  247. package/dist/lib/ai-model/models/task-routing.js.map +0 -1
  248. package/dist/lib/ai-model/service-caller/system-one.js +0 -206
  249. package/dist/lib/ai-model/service-caller/system-one.js.map +0 -1
  250. package/dist/types/ai-model/models/task-routing.d.ts +0 -6
  251. package/dist/types/ai-model/models/task-routing.d.ts.map +0 -1
  252. package/dist/types/ai-model/service-caller/system-one.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ai-model/service-caller/openai/responses/responses.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../../../src/ai-model/service-caller/openai/responses/responses.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { getDebug } from '@midscene/shared/logger';\nimport type { ResolveImageDetail } from '../../../model-adapter/types';\nimport type { ModelRequestConfigInput } from '../../../model-adapter/types';\nimport { createProxyAgentIfNeeded } from '../../proxy';\nimport type { ModelCallContext, OpenAIProtocolCallResult } from '../../types';\nimport { stringifyForDebug } from '../../utils';\nimport { callResponsesNonStreaming } from './non-stream';\nimport { callResponsesStream } from './stream';\nimport type { ResponsesCallOptions } from './types';\nimport { toResponsesInput } from './utils';\n\nexport async function prepareResponses({\n messages,\n modelRuntime,\n options,\n}: Pick<ModelCallContext, 'messages' | 'modelRuntime' | 'options'>) {\n const debugCall = getDebug('ai:call');\n const { config: modelConfig, adapter } = modelRuntime;\n const modelCallInput: ModelRequestConfigInput = {\n intent: modelConfig.intent,\n userConfig: {\n temperature: modelConfig.temperature,\n reasoningEnabled: modelConfig.reasoningEnabled,\n reasoningEffort: modelConfig.reasoningEffort,\n reasoningBudget: modelConfig.reasoningBudget,\n responseFormat: modelConfig.responseFormat,\n },\n semanticRetryAttempt: options?.semanticRetryAttempt,\n requiresOriginalImageDetail: options?.requiresOriginalImageDetail,\n expectedJsonObjectResponse: options?.expectedJsonObjectResponse,\n };\n const { config } = adapter.responses.buildResponsesParams(modelCallInput);\n debugCall(`adapter responses params: ${stringifyForDebug({ config })}`);\n const resolveImageDetail: ResolveImageDetail = ({ imageDetail }) =>\n adapter.resolveImageDetail({\n imageDetail,\n intent: modelConfig.intent,\n requiresOriginalImageDetail: options?.requiresOriginalImageDetail,\n });\n const requestParams = { ...config, ...modelConfig.extraBody };\n if (requestParams.background === true) {\n throw new Error('Responses background mode is not supported');\n }\n const requestBodyParams: ResponsesCallOptions['requestBodyParams'] = {\n store: false,\n ...requestParams,\n model: modelConfig.modelName,\n input: toResponsesInput(messages, resolveImageDetail),\n };\n const proxyAgent = await createProxyAgentIfNeeded({\n socksProxy: modelConfig.socksProxy,\n httpProxy: modelConfig.httpProxy,\n });\n return {\n requestParams: requestBodyParams,\n proxyAgent,\n };\n}\n\nexport function callResponses(\n options: ResponsesCallOptions,\n stream: boolean,\n): Promise<OpenAIProtocolCallResult> {\n return stream\n ? callResponsesStream(options)\n : callResponsesNonStreaming(options);\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","prepareResponses","messages","modelRuntime","options","debugCall","getDebug","modelConfig","adapter","modelCallInput","config","stringifyForDebug","resolveImageDetail","imageDetail","requestParams","Error","requestBodyParams","toResponsesInput","proxyAgent","createProxyAgentIfNeeded","callResponses","stream","callResponsesStream","callResponsesNonStreaming"],"mappings":";;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGD,oBAAoB,CAAC,CAACC,YAAYC,QAAQ,CAACF,oBAAoB,CAAC,CAAC,UAASE,MACzEC,OAAO,cAAc,CAAC,UAASD,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAF,oBAAoB,CAAC,GAAG,CAACI,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFL,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,eAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;;;;;;ACKO,eAAeI,iBAAiB,EACrCC,QAAQ,EACRC,YAAY,EACZC,OAAO,EACyD;IAChE,MAAMC,YAAYC,AAAAA,IAAAA,uBAAAA,QAAAA,AAAAA,EAAS;IAC3B,MAAM,EAAE,QAAQC,WAAW,EAAEC,OAAO,EAAE,GAAGL;IACzC,MAAMM,iBAA0C;QAC9C,QAAQF,YAAY,MAAM;QAC1B,YAAY;YACV,aAAaA,YAAY,WAAW;YACpC,kBAAkBA,YAAY,gBAAgB;YAC9C,iBAAiBA,YAAY,eAAe;YAC5C,iBAAiBA,YAAY,eAAe;YAC5C,gBAAgBA,YAAY,cAAc;QAC5C;QACA,sBAAsBH,SAAS;QAC/B,6BAA6BA,SAAS;QACtC,4BAA4BA,SAAS;IACvC;IACA,MAAM,EAAEM,MAAM,EAAE,GAAGF,QAAQ,SAAS,CAAC,oBAAoB,CAACC;IAC1DJ,UAAU,CAAC,0BAA0B,EAAEM,AAAAA,IAAAA,kCAAAA,iBAAAA,AAAAA,EAAkB;QAAED;IAAO,IAAI;IACtE,MAAME,qBAAyC,CAAC,EAAEC,WAAW,EAAE,GAC7DL,QAAQ,kBAAkB,CAAC;YACzBK;YACA,QAAQN,YAAY,MAAM;YAC1B,6BAA6BH,SAAS;QACxC;IACF,MAAMU,gBAAgB;QAAE,GAAGJ,MAAM;QAAE,GAAGH,YAAY,SAAS;IAAC;IAC5D,IAAIO,AAA6B,SAA7BA,cAAc,UAAU,EAC1B,MAAM,IAAIC,MAAM;IAElB,MAAMC,oBAA+D;QACnE,OAAO;QACP,GAAGF,aAAa;QAChB,OAAOP,YAAY,SAAS;QAC5B,OAAOU,AAAAA,IAAAA,oCAAAA,gBAAAA,AAAAA,EAAiBf,UAAUU;IACpC;IACA,MAAMM,aAAa,MAAMC,AAAAA,IAAAA,yBAAAA,wBAAAA,AAAAA,EAAyB;QAChD,YAAYZ,YAAY,UAAU;QAClC,WAAWA,YAAY,SAAS;IAClC;IACA,OAAO;QACL,eAAeS;QACfE;IACF;AACF;AAEO,SAASE,cACdhB,OAA6B,EAC7BiB,MAAe;IAEf,OAAOA,SACHC,AAAAA,IAAAA,mCAAAA,mBAAAA,AAAAA,EAAoBlB,WACpBmB,AAAAA,IAAAA,uCAAAA,yBAAAA,AAAAA,EAA0BnB;AAChC"}
1
+ {"version":3,"file":"ai-model/service-caller/openai/responses/responses.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../../../src/ai-model/service-caller/openai/responses/responses.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { getDebug } from '@midscene/shared/logger';\nimport type { ResolveImageDetail } from '../../../model-adapter/types';\nimport type { ModelRequestConfigInput } from '../../../model-adapter/types';\nimport { createProxyAgentIfNeeded } from '../../proxy';\nimport type {\n ModelCallContext,\n ModelCallMessages,\n OpenAIProtocolCallResult,\n} from '../../types';\nimport { stringifyForDebug } from '../../utils';\nimport { callResponsesNonStreaming } from './non-stream';\nimport { callResponsesStream } from './stream';\nimport type { ResponsesCallOptions } from './types';\nimport { toResponsesInput } from './utils';\n\nexport async function prepareResponses({\n messages,\n modelRuntime,\n options,\n}: Pick<ModelCallContext, 'modelRuntime' | 'options'> & {\n messages: ModelCallMessages;\n}) {\n const debugCall = getDebug('ai:call');\n const { config: modelConfig, adapter } = modelRuntime;\n const modelCallInput: ModelRequestConfigInput = {\n intent: modelConfig.intent,\n userConfig: {\n temperature: modelConfig.temperature,\n reasoningEnabled: modelConfig.reasoningEnabled,\n reasoningEffort: modelConfig.reasoningEffort,\n reasoningBudget: modelConfig.reasoningBudget,\n responseFormat: modelConfig.responseFormat,\n },\n semanticRetryAttempt: options?.semanticRetryAttempt,\n requiresOriginalImageDetail: options?.requiresOriginalImageDetail,\n expectedJsonObjectResponse: options?.expectedJsonObjectResponse,\n };\n const { config } = adapter.responses.buildResponsesParams(modelCallInput);\n debugCall(`adapter responses params: ${stringifyForDebug({ config })}`);\n const resolveImageDetail: ResolveImageDetail = ({ imageDetail }) =>\n adapter.resolveImageDetail({\n imageDetail,\n intent: modelConfig.intent,\n requiresOriginalImageDetail: options?.requiresOriginalImageDetail,\n });\n const requestParams = { ...config, ...modelConfig.extraBody };\n if (requestParams.background === true) {\n throw new Error('Responses background mode is not supported');\n }\n const requestBodyParams: ResponsesCallOptions['requestBodyParams'] = {\n store: false,\n ...requestParams,\n model: modelConfig.modelName,\n input: toResponsesInput(messages, resolveImageDetail),\n };\n const proxyAgent = await createProxyAgentIfNeeded({\n socksProxy: modelConfig.socksProxy,\n httpProxy: modelConfig.httpProxy,\n });\n return {\n requestParams: requestBodyParams,\n proxyAgent,\n };\n}\n\nexport function callResponses(\n options: ResponsesCallOptions,\n stream: boolean,\n): Promise<OpenAIProtocolCallResult> {\n return stream\n ? callResponsesStream(options)\n : callResponsesNonStreaming(options);\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","prepareResponses","messages","modelRuntime","options","debugCall","getDebug","modelConfig","adapter","modelCallInput","config","stringifyForDebug","resolveImageDetail","imageDetail","requestParams","Error","requestBodyParams","toResponsesInput","proxyAgent","createProxyAgentIfNeeded","callResponses","stream","callResponsesStream","callResponsesNonStreaming"],"mappings":";;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGD,oBAAoB,CAAC,CAACC,YAAYC,QAAQ,CAACF,oBAAoB,CAAC,CAAC,UAASE,MACzEC,OAAO,cAAc,CAAC,UAASD,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAF,oBAAoB,CAAC,GAAG,CAACI,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFL,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,eAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;;;;;;ACSO,eAAeI,iBAAiB,EACrCC,QAAQ,EACRC,YAAY,EACZC,OAAO,EAGR;IACC,MAAMC,YAAYC,AAAAA,IAAAA,uBAAAA,QAAAA,AAAAA,EAAS;IAC3B,MAAM,EAAE,QAAQC,WAAW,EAAEC,OAAO,EAAE,GAAGL;IACzC,MAAMM,iBAA0C;QAC9C,QAAQF,YAAY,MAAM;QAC1B,YAAY;YACV,aAAaA,YAAY,WAAW;YACpC,kBAAkBA,YAAY,gBAAgB;YAC9C,iBAAiBA,YAAY,eAAe;YAC5C,iBAAiBA,YAAY,eAAe;YAC5C,gBAAgBA,YAAY,cAAc;QAC5C;QACA,sBAAsBH,SAAS;QAC/B,6BAA6BA,SAAS;QACtC,4BAA4BA,SAAS;IACvC;IACA,MAAM,EAAEM,MAAM,EAAE,GAAGF,QAAQ,SAAS,CAAC,oBAAoB,CAACC;IAC1DJ,UAAU,CAAC,0BAA0B,EAAEM,AAAAA,IAAAA,kCAAAA,iBAAAA,AAAAA,EAAkB;QAAED;IAAO,IAAI;IACtE,MAAME,qBAAyC,CAAC,EAAEC,WAAW,EAAE,GAC7DL,QAAQ,kBAAkB,CAAC;YACzBK;YACA,QAAQN,YAAY,MAAM;YAC1B,6BAA6BH,SAAS;QACxC;IACF,MAAMU,gBAAgB;QAAE,GAAGJ,MAAM;QAAE,GAAGH,YAAY,SAAS;IAAC;IAC5D,IAAIO,AAA6B,SAA7BA,cAAc,UAAU,EAC1B,MAAM,IAAIC,MAAM;IAElB,MAAMC,oBAA+D;QACnE,OAAO;QACP,GAAGF,aAAa;QAChB,OAAOP,YAAY,SAAS;QAC5B,OAAOU,AAAAA,IAAAA,oCAAAA,gBAAAA,AAAAA,EAAiBf,UAAUU;IACpC;IACA,MAAMM,aAAa,MAAMC,AAAAA,IAAAA,yBAAAA,wBAAAA,AAAAA,EAAyB;QAChD,YAAYZ,YAAY,UAAU;QAClC,WAAWA,YAAY,SAAS;IAClC;IACA,OAAO;QACL,eAAeS;QACfE;IACF;AACF;AAEO,SAASE,cACdhB,OAA6B,EAC7BiB,MAAe;IAEf,OAAOA,SACHC,AAAAA,IAAAA,mCAAAA,mBAAAA,AAAAA,EAAoBlB,WACpBmB,AAAAA,IAAAA,uCAAAA,yBAAAA,AAAAA,EAA0BnB;AAChC"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ callSystemOne: ()=>callSystemOne
28
+ });
29
+ const utils_namespaceObject = require("@midscene/shared/utils");
30
+ const external_schema_js_namespaceObject = require("./schema.js");
31
+ async function callSystemOne(context, prepared) {
32
+ const start = Date.now();
33
+ context.recordEvent?.({
34
+ type: 'request',
35
+ request: {
36
+ url: prepared.url,
37
+ method: 'POST',
38
+ body: prepared.body
39
+ }
40
+ });
41
+ try {
42
+ const response = await fetch(prepared.url, {
43
+ method: 'POST',
44
+ headers: prepared.headers,
45
+ body: prepared.body,
46
+ signal: context.requestSignal,
47
+ ...prepared.dispatcher ? {
48
+ dispatcher: prepared.dispatcher
49
+ } : {}
50
+ });
51
+ const body = await response.text();
52
+ const http = {
53
+ status: response.status,
54
+ ok: response.ok,
55
+ body
56
+ };
57
+ context.recordEvent?.({
58
+ type: 'http-response',
59
+ http
60
+ });
61
+ if (!response.ok) throw new Error(`Jev request failed (${response.status}): ${body.slice(0, 4000)}`);
62
+ const result = external_schema_js_namespaceObject.systemOneResponseSchema.parse(JSON.parse(body));
63
+ for (const [name, question] of Object.entries(prepared.questions)){
64
+ (0, utils_namespaceObject.assert)(result.answers[name]?.type === question.type, `Missing or invalid Jev answer: ${name}`);
65
+ const answer = result.answers[name];
66
+ if ('choice' === question.type && 'choice' === answer.type) (0, utils_namespaceObject.assert)(Object.hasOwn(question.criteria, answer.choice), `Invalid Jev choice: ${name}`);
67
+ }
68
+ const input = result.usage?.input_tokens;
69
+ const output = result.usage?.output_tokens;
70
+ const final = {
71
+ content: body,
72
+ isStreamed: false,
73
+ rawUsage: null != input && null != output ? {
74
+ prompt_tokens: input,
75
+ completion_tokens: output,
76
+ total_tokens: input + output
77
+ } : void 0,
78
+ timeCost: Date.now() - start,
79
+ requestId: void 0,
80
+ responseModelName: result.model
81
+ };
82
+ context.recordEvent?.({
83
+ type: 'response',
84
+ final
85
+ });
86
+ return final;
87
+ } catch (error) {
88
+ context.recordEvent?.({
89
+ type: 'error',
90
+ error: error instanceof Error ? error.message : String(error)
91
+ });
92
+ throw error;
93
+ }
94
+ }
95
+ exports.callSystemOne = __webpack_exports__.callSystemOne;
96
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
97
+ "callSystemOne"
98
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
99
+ Object.defineProperty(exports, '__esModule', {
100
+ value: true
101
+ });
102
+
103
+ //# sourceMappingURL=call-system-one.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-model/service-caller/system-one/call-system-one.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../../src/ai-model/service-caller/system-one/call-system-one.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { assert } from '@midscene/shared/utils';\nimport type { ModelCallContext, ModelCallResult } from '../types';\nimport type { prepareSystemOne } from './prepare-system-one';\nimport { systemOneResponseSchema } from './schema';\n\nexport async function callSystemOne(\n context: ModelCallContext,\n prepared: Awaited<ReturnType<typeof prepareSystemOne>>,\n): Promise<ModelCallResult> {\n const start = Date.now();\n context.recordEvent?.({\n type: 'request',\n request: { url: prepared.url, method: 'POST', body: prepared.body },\n });\n try {\n const response = await fetch(prepared.url, {\n method: 'POST',\n headers: prepared.headers,\n body: prepared.body,\n signal: context.requestSignal,\n ...(prepared.dispatcher ? { dispatcher: prepared.dispatcher } : {}),\n });\n const body = await response.text();\n const http = { status: response.status, ok: response.ok, body };\n context.recordEvent?.({ type: 'http-response', http });\n if (!response.ok) {\n throw new Error(\n `Jev request failed (${response.status}): ${body.slice(0, 4000)}`,\n );\n }\n const result = systemOneResponseSchema.parse(JSON.parse(body));\n for (const [name, question] of Object.entries(prepared.questions)) {\n assert(\n result.answers[name]?.type === question.type,\n `Missing or invalid Jev answer: ${name}`,\n );\n const answer = result.answers[name];\n if (question.type === 'choice' && answer.type === 'choice') {\n assert(\n Object.hasOwn(question.criteria, answer.choice),\n `Invalid Jev choice: ${name}`,\n );\n }\n }\n const input = result.usage?.input_tokens;\n const output = result.usage?.output_tokens;\n const final: ModelCallResult = {\n content: body,\n isStreamed: false,\n rawUsage:\n input != null && output != null\n ? {\n prompt_tokens: input,\n completion_tokens: output,\n total_tokens: input + output,\n }\n : undefined,\n timeCost: Date.now() - start,\n // TypeSafe and OpenRouter use different ID field names; defer compatibility handling.\n requestId: undefined,\n responseModelName: result.model,\n };\n context.recordEvent?.({ type: 'response', final });\n return final;\n } catch (error) {\n context.recordEvent?.({\n type: 'error',\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","callSystemOne","context","prepared","start","Date","response","fetch","body","http","Error","result","systemOneResponseSchema","JSON","name","question","assert","answer","input","output","final","undefined","error","String"],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ prepareSystemOne: ()=>external_prepare_system_one_js_namespaceObject.prepareSystemOne,
28
+ callSystemOne: ()=>external_call_system_one_js_namespaceObject.callSystemOne
29
+ });
30
+ const external_call_system_one_js_namespaceObject = require("./call-system-one.js");
31
+ const external_prepare_system_one_js_namespaceObject = require("./prepare-system-one.js");
32
+ exports.callSystemOne = __webpack_exports__.callSystemOne;
33
+ exports.prepareSystemOne = __webpack_exports__.prepareSystemOne;
34
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
35
+ "callSystemOne",
36
+ "prepareSystemOne"
37
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
38
+ Object.defineProperty(exports, '__esModule', {
39
+ value: true
40
+ });
41
+
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-model/service-caller/system-one/index.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol"],"mappings":";;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGD,oBAAoB,CAAC,CAACC,YAAYC,QAAQ,CAACF,oBAAoB,CAAC,CAAC,UAASE,MACzEC,OAAO,cAAc,CAAC,UAASD,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAF,oBAAoB,CAAC,GAAG,CAACI,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFL,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,eAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ prepareSystemOne: ()=>prepareSystemOne
28
+ });
29
+ const utils_namespaceObject = require("@midscene/shared/utils");
30
+ const index_js_namespaceObject = require("../proxy/index.js");
31
+ const external_utils_js_namespaceObject = require("./utils.js");
32
+ async function prepareSystemOne(config, request) {
33
+ (0, utils_namespaceObject.assert)(config.openaiBaseURL, 'Jev requires MIDSCENE_*_MODEL_BASE_URL');
34
+ (0, utils_namespaceObject.assert)(config.openaiApiKey, 'Jev requires MIDSCENE_*_MODEL_API_KEY');
35
+ (0, utils_namespaceObject.assert)(!config.protocol || 'openai-chat' === config.protocol, 'Jev uses System One, not the Responses API');
36
+ const base = config.openaiBaseURL.replace(/\/+$/, '');
37
+ const url = `${base}/systemone`;
38
+ const isOpenRouter = 'openrouter.ai' === new URL(base).hostname;
39
+ const { imageState, assets } = (0, external_utils_js_namespaceObject.encodeSystemOneImages)(request.images, isOpenRouter);
40
+ const body = {
41
+ ...config.extraBody,
42
+ model: config.modelName,
43
+ state: {
44
+ ...request.state,
45
+ ...imageState
46
+ },
47
+ questions: request.questions,
48
+ ...!isOpenRouter && Object.keys(assets).length ? {
49
+ assets
50
+ } : {}
51
+ };
52
+ const serializedBody = JSON.stringify(body);
53
+ (0, utils_namespaceObject.assert)(new TextEncoder().encode(serializedBody).length <= 33554432, 'Jev request exceeds the 32 MiB body limit');
54
+ return {
55
+ url,
56
+ body: serializedBody,
57
+ questions: request.questions,
58
+ headers: {
59
+ ...config.openaiExtraConfig?.defaultHeaders,
60
+ Authorization: `Bearer ${config.openaiApiKey}`,
61
+ 'Content-Type': 'application/json',
62
+ 'TypeSafe-Danger-Zone-Images': 'true'
63
+ },
64
+ dispatcher: await (0, index_js_namespaceObject.createProxyAgentIfNeeded)({
65
+ socksProxy: config.socksProxy,
66
+ httpProxy: config.httpProxy
67
+ })
68
+ };
69
+ }
70
+ exports.prepareSystemOne = __webpack_exports__.prepareSystemOne;
71
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
72
+ "prepareSystemOne"
73
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
74
+ Object.defineProperty(exports, '__esModule', {
75
+ value: true
76
+ });
77
+
78
+ //# sourceMappingURL=prepare-system-one.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-model/service-caller/system-one/prepare-system-one.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../../src/ai-model/service-caller/system-one/prepare-system-one.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { IModelConfig } from '@midscene/shared/env';\nimport { assert } from '@midscene/shared/utils';\nimport { createProxyAgentIfNeeded } from '../proxy';\nimport type { SystemOneRequest } from './schema';\nimport { encodeSystemOneImages } from './utils';\n\nexport async function prepareSystemOne(\n config: IModelConfig,\n request: SystemOneRequest,\n) {\n assert(config.openaiBaseURL, 'Jev requires MIDSCENE_*_MODEL_BASE_URL');\n assert(config.openaiApiKey, 'Jev requires MIDSCENE_*_MODEL_API_KEY');\n assert(\n !config.protocol || config.protocol === 'openai-chat',\n 'Jev uses System One, not the Responses API',\n );\n const base = config.openaiBaseURL.replace(/\\/+$/, '');\n const url = `${base}/systemone`;\n const isOpenRouter = new URL(base).hostname === 'openrouter.ai';\n const { imageState, assets } = encodeSystemOneImages(\n request.images,\n isOpenRouter,\n );\n const body = {\n ...config.extraBody,\n model: config.modelName,\n state: { ...request.state, ...imageState },\n questions: request.questions,\n ...(!isOpenRouter && Object.keys(assets).length ? { assets } : {}),\n };\n const serializedBody = JSON.stringify(body);\n assert(\n new TextEncoder().encode(serializedBody).length <= 32 * 1024 * 1024,\n 'Jev request exceeds the 32 MiB body limit',\n );\n return {\n url,\n body: serializedBody,\n questions: request.questions,\n headers: {\n ...(config.openaiExtraConfig?.defaultHeaders as\n | Record<string, string>\n | undefined),\n Authorization: `Bearer ${config.openaiApiKey}`,\n 'Content-Type': 'application/json',\n 'TypeSafe-Danger-Zone-Images': 'true',\n },\n dispatcher: await createProxyAgentIfNeeded({\n socksProxy: config.socksProxy,\n httpProxy: config.httpProxy,\n }),\n };\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","prepareSystemOne","config","request","assert","base","url","isOpenRouter","URL","imageState","assets","encodeSystemOneImages","body","serializedBody","JSON","TextEncoder","createProxyAgentIfNeeded"],"mappings":";;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGD,oBAAoB,CAAC,CAACC,YAAYC,QAAQ,CAACF,oBAAoB,CAAC,CAAC,UAASE,MACzEC,OAAO,cAAc,CAAC,UAASD,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAF,oBAAoB,CAAC,GAAG,CAACI,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFL,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,eAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;;ACAO,eAAeI,iBACpBC,MAAoB,EACpBC,OAAyB;IAEzBC,IAAAA,sBAAAA,MAAAA,AAAAA,EAAOF,OAAO,aAAa,EAAE;IAC7BE,IAAAA,sBAAAA,MAAAA,AAAAA,EAAOF,OAAO,YAAY,EAAE;IAC5BE,IAAAA,sBAAAA,MAAAA,AAAAA,EACE,CAACF,OAAO,QAAQ,IAAIA,AAAoB,kBAApBA,OAAO,QAAQ,EACnC;IAEF,MAAMG,OAAOH,OAAO,aAAa,CAAC,OAAO,CAAC,QAAQ;IAClD,MAAMI,MAAM,GAAGD,KAAK,UAAU,CAAC;IAC/B,MAAME,eAAe,AAA2B,oBAA3B,IAAIC,IAAIH,MAAM,QAAQ;IAC3C,MAAM,EAAEI,UAAU,EAAEC,MAAM,EAAE,GAAGC,AAAAA,IAAAA,kCAAAA,qBAAAA,AAAAA,EAC7BR,QAAQ,MAAM,EACdI;IAEF,MAAMK,OAAO;QACX,GAAGV,OAAO,SAAS;QACnB,OAAOA,OAAO,SAAS;QACvB,OAAO;YAAE,GAAGC,QAAQ,KAAK;YAAE,GAAGM,UAAU;QAAC;QACzC,WAAWN,QAAQ,SAAS;QAC5B,GAAI,CAACI,gBAAgBV,OAAO,IAAI,CAACa,QAAQ,MAAM,GAAG;YAAEA;QAAO,IAAI,CAAC,CAAC;IACnE;IACA,MAAMG,iBAAiBC,KAAK,SAAS,CAACF;IACtCR,IAAAA,sBAAAA,MAAAA,AAAAA,EACE,IAAIW,cAAc,MAAM,CAACF,gBAAgB,MAAM,IAAI,UACnD;IAEF,OAAO;QACLP;QACA,MAAMO;QACN,WAAWV,QAAQ,SAAS;QAC5B,SAAS;YACP,GAAID,OAAO,iBAAiB,EAAE,cAAc;YAG5C,eAAe,CAAC,OAAO,EAAEA,OAAO,YAAY,EAAE;YAC9C,gBAAgB;YAChB,+BAA+B;QACjC;QACA,YAAY,MAAMc,AAAAA,IAAAA,yBAAAA,wBAAAA,AAAAA,EAAyB;YACzC,YAAYd,OAAO,UAAU;YAC7B,WAAWA,OAAO,SAAS;QAC7B;IACF;AACF"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ systemOneResponseSchema: ()=>systemOneResponseSchema,
28
+ systemOneAnswerSchema: ()=>systemOneAnswerSchema
29
+ });
30
+ const external_zod_namespaceObject = require("zod");
31
+ const probability = external_zod_namespaceObject.z.number().min(0).max(1);
32
+ const systemOneAnswerSchema = external_zod_namespaceObject.z.discriminatedUnion('type', [
33
+ external_zod_namespaceObject.z.object({
34
+ type: external_zod_namespaceObject.z.literal('noul'),
35
+ noul: probability
36
+ }),
37
+ external_zod_namespaceObject.z.object({
38
+ type: external_zod_namespaceObject.z.literal('choice'),
39
+ choice: external_zod_namespaceObject.z.string()
40
+ }),
41
+ external_zod_namespaceObject.z.object({
42
+ type: external_zod_namespaceObject.z.literal('box'),
43
+ box: external_zod_namespaceObject.z.object({
44
+ left: probability,
45
+ right: probability,
46
+ top: probability,
47
+ bottom: probability
48
+ }).refine((box)=>box.left < box.right && box.top < box.bottom, 'Invalid box edges')
49
+ })
50
+ ]);
51
+ const systemOneResponseSchema = external_zod_namespaceObject.z.object({
52
+ model: external_zod_namespaceObject.z.string().optional(),
53
+ answers: external_zod_namespaceObject.z.record(systemOneAnswerSchema),
54
+ usage: external_zod_namespaceObject.z.object({
55
+ input_tokens: external_zod_namespaceObject.z.number().nonnegative().nullable().optional(),
56
+ output_tokens: external_zod_namespaceObject.z.number().nonnegative().nullable().optional()
57
+ }).optional()
58
+ });
59
+ exports.systemOneAnswerSchema = __webpack_exports__.systemOneAnswerSchema;
60
+ exports.systemOneResponseSchema = __webpack_exports__.systemOneResponseSchema;
61
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
62
+ "systemOneAnswerSchema",
63
+ "systemOneResponseSchema"
64
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
65
+ Object.defineProperty(exports, '__esModule', {
66
+ value: true
67
+ });
68
+
69
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-model/service-caller/system-one/schema.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../../src/ai-model/service-caller/system-one/schema.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { z } from 'zod';\n\nexport interface SystemOneRequest {\n state: Record<string, unknown>;\n images?: Record<string, string>;\n questions: Record<\n string,\n | { type: 'noul' | 'box'; instructions: unknown }\n | {\n type: 'choice';\n instructions: unknown;\n criteria: Record<string, string>;\n }\n >;\n}\n\nconst probability = z.number().min(0).max(1);\nexport const systemOneAnswerSchema = z.discriminatedUnion('type', [\n z.object({ type: z.literal('noul'), noul: probability }),\n z.object({ type: z.literal('choice'), choice: z.string() }),\n z.object({\n type: z.literal('box'),\n box: z\n .object({\n left: probability,\n right: probability,\n top: probability,\n bottom: probability,\n })\n .refine(\n (box) => box.left < box.right && box.top < box.bottom,\n 'Invalid box edges',\n ),\n }),\n]);\nexport const systemOneResponseSchema = z.object({\n model: z.string().optional(),\n answers: z.record(systemOneAnswerSchema),\n usage: z\n .object({\n input_tokens: z.number().nonnegative().nullable().optional(),\n output_tokens: z.number().nonnegative().nullable().optional(),\n })\n .optional(),\n});\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","probability","z","systemOneAnswerSchema","box","systemOneResponseSchema"],"mappings":";;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGD,oBAAoB,CAAC,CAACC,YAAYC,QAAQ,CAACF,oBAAoB,CAAC,CAAC,UAASE,MACzEC,OAAO,cAAc,CAAC,UAASD,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAF,oBAAoB,CAAC,GAAG,CAACI,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFL,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,eAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;ACUA,MAAMI,cAAcC,6BAAAA,CAAAA,CAAAA,MAAQ,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACnC,MAAMC,wBAAwBD,6BAAAA,CAAAA,CAAAA,kBAAoB,CAAC,QAAQ;IAChEA,6BAAAA,CAAAA,CAAAA,MAAQ,CAAC;QAAE,MAAMA,6BAAAA,CAAAA,CAAAA,OAAS,CAAC;QAAS,MAAMD;IAAY;IACtDC,6BAAAA,CAAAA,CAAAA,MAAQ,CAAC;QAAE,MAAMA,6BAAAA,CAAAA,CAAAA,OAAS,CAAC;QAAW,QAAQA,6BAAAA,CAAAA,CAAAA,MAAQ;IAAG;IACzDA,6BAAAA,CAAAA,CAAAA,MAAQ,CAAC;QACP,MAAMA,6BAAAA,CAAAA,CAAAA,OAAS,CAAC;QAChB,KAAKA,6BAAAA,CAAAA,CAAAA,MACI,CAAC;YACN,MAAMD;YACN,OAAOA;YACP,KAAKA;YACL,QAAQA;QACV,GACC,MAAM,CACL,CAACG,MAAQA,IAAI,IAAI,GAAGA,IAAI,KAAK,IAAIA,IAAI,GAAG,GAAGA,IAAI,MAAM,EACrD;IAEN;CACD;AACM,MAAMC,0BAA0BH,6BAAAA,CAAAA,CAAAA,MAAQ,CAAC;IAC9C,OAAOA,6BAAAA,CAAAA,CAAAA,MAAQ,GAAG,QAAQ;IAC1B,SAASA,6BAAAA,CAAAA,CAAAA,MAAQ,CAACC;IAClB,OAAOD,6BAAAA,CAAAA,CAAAA,MACE,CAAC;QACN,cAAcA,6BAAAA,CAAAA,CAAAA,MAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ;QAC1D,eAAeA,6BAAAA,CAAAA,CAAAA,MAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ;IAC7D,GACC,QAAQ;AACb"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ encodeSystemOneImages: ()=>encodeSystemOneImages
28
+ });
29
+ const utils_namespaceObject = require("@midscene/shared/utils");
30
+ function encodeSystemOneImages(images, isOpenRouter) {
31
+ const assets = {};
32
+ const imageState = Object.fromEntries(Object.entries(images ?? {}).map(([name, dataURL])=>{
33
+ if (isOpenRouter) return [
34
+ name,
35
+ {
36
+ type: 'image_url',
37
+ image_url: {
38
+ url: dataURL
39
+ }
40
+ }
41
+ ];
42
+ const reference = (0, utils_namespaceObject.uuid)();
43
+ const match = /^data:image\/(png|jpe?g);base64,(.+)$/.exec(dataURL);
44
+ (0, utils_namespaceObject.assert)(match, 'System One images must be prepared PNG or JPEG data URLs');
45
+ assets[reference] = {
46
+ type: 'image',
47
+ format: 'png' === match[1] ? 'png' : 'jpg',
48
+ data_base64: match[2]
49
+ };
50
+ return [
51
+ name,
52
+ reference
53
+ ];
54
+ }));
55
+ return {
56
+ imageState,
57
+ assets
58
+ };
59
+ }
60
+ exports.encodeSystemOneImages = __webpack_exports__.encodeSystemOneImages;
61
+ for(var __rspack_i in __webpack_exports__)if (-1 === [
62
+ "encodeSystemOneImages"
63
+ ].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
64
+ Object.defineProperty(exports, '__esModule', {
65
+ value: true
66
+ });
67
+
68
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-model/service-caller/system-one/utils.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../../src/ai-model/service-caller/system-one/utils.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { assert, uuid } from '@midscene/shared/utils';\nimport type { SystemOneRequest } from './schema';\n\nexport function encodeSystemOneImages(\n images: SystemOneRequest['images'],\n isOpenRouter: boolean,\n) {\n const assets: Record<string, unknown> = {};\n const imageState = Object.fromEntries(\n Object.entries(images ?? {}).map(([name, dataURL]) => {\n if (isOpenRouter) {\n return [name, { type: 'image_url', image_url: { url: dataURL } }];\n }\n const reference = uuid();\n const match = /^data:image\\/(png|jpe?g);base64,(.+)$/.exec(dataURL);\n assert(match, 'System One images must be prepared PNG or JPEG data URLs');\n assets[reference] = {\n type: 'image',\n format: match[1] === 'png' ? 'png' : 'jpg',\n data_base64: match[2],\n };\n return [name, reference];\n }),\n );\n return { imageState, assets };\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","encodeSystemOneImages","images","isOpenRouter","assets","imageState","name","dataURL","reference","uuid","match","assert"],"mappings":";;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGD,oBAAoB,CAAC,CAACC,YAAYC,QAAQ,CAACF,oBAAoB,CAAC,CAAC,UAASE,MACzEC,OAAO,cAAc,CAAC,UAASD,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAF,oBAAoB,CAAC,GAAG,CAACI,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFL,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,eAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;ACHO,SAASI,sBACdC,MAAkC,EAClCC,YAAqB;IAErB,MAAMC,SAAkC,CAAC;IACzC,MAAMC,aAAaR,OAAO,WAAW,CACnCA,OAAO,OAAO,CAACK,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAACI,MAAMC,QAAQ;QAC/C,IAAIJ,cACF,OAAO;YAACG;YAAM;gBAAE,MAAM;gBAAa,WAAW;oBAAE,KAAKC;gBAAQ;YAAE;SAAE;QAEnE,MAAMC,YAAYC,AAAAA,IAAAA,sBAAAA,IAAAA,AAAAA;QAClB,MAAMC,QAAQ,wCAAwC,IAAI,CAACH;QAC3DI,IAAAA,sBAAAA,MAAAA,AAAAA,EAAOD,OAAO;QACdN,MAAM,CAACI,UAAU,GAAG;YAClB,MAAM;YACN,QAAQE,AAAa,UAAbA,KAAK,CAAC,EAAE,GAAa,QAAQ;YACrC,aAAaA,KAAK,CAAC,EAAE;QACvB;QACA,OAAO;YAACJ;YAAME;SAAU;IAC1B;IAEF,OAAO;QAAEH;QAAYD;IAAO;AAC9B"}
@@ -89,12 +89,12 @@ function appendAIRequestFailureSummary(error, attemptErrors, maxAttempts) {
89
89
  error.message = `${error.message}\nPrevious AI call attempt errors:\n${details}`;
90
90
  return error;
91
91
  }
92
- const buildUsageInfo = ({ apiProtocol, stream, usageData, requestId, timeCost, totalTimeCost, retryCount, modelName, modelDescription, responseModelName, slot, internalCallId })=>{
92
+ const buildUsageInfo = ({ requestKind, stream, usageData, requestId, timeCost, totalTimeCost, retryCount, modelName, modelDescription, responseModelName, slot, internalCallId })=>{
93
93
  if (!usageData) return;
94
94
  const cachedInputTokens = usageData?.prompt_tokens_details?.cached_tokens;
95
95
  return {
96
96
  ...usageData,
97
- api_protocol: apiProtocol,
97
+ request_kind: requestKind,
98
98
  stream,
99
99
  prompt_tokens: usageData.prompt_tokens ?? 0,
100
100
  completion_tokens: usageData.completion_tokens ?? 0,
@@ -1 +1 @@
1
- {"version":3,"file":"ai-model/service-caller/utils.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../src/ai-model/service-caller/utils.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { RawAssistantOutput } from '@/types';\nimport type { AIUsageInfo } from '@/types';\nimport type OpenAI from 'openai';\nimport type { ModelRuntime } from '../models';\n\n// Error class that preserves usage and rawResponse when AI call parsing fails\nexport class AIResponseParseError extends Error {\n usage?: AIUsageInfo;\n /**\n * Adapter-extracted content used by Midscene for parsing. This is not the\n * full provider response or choices[0].message.\n */\n rawResponse: string;\n rawAssistantOutput?: RawAssistantOutput;\n reasoningContent?: string;\n\n constructor(\n message: string,\n rawResponse: string,\n usage?: AIUsageInfo,\n rawAssistantOutput?: RawAssistantOutput,\n reasoningContent?: string,\n ) {\n super(message);\n this.name = 'AIResponseParseError';\n this.rawResponse = rawResponse;\n this.usage = usage;\n this.rawAssistantOutput = rawAssistantOutput;\n this.reasoningContent = reasoningContent;\n }\n}\n\n/**\n * Internal field name stamped onto every AIUsageInfo shaped by callAI().\n * Used for cross-path dedup when the provider does not return a request_id.\n */\nexport const INTERNAL_CALL_ID_FIELD = '_midscene_call_id';\n\nlet internalCallIdCounter = 0;\nexport function nextInternalCallId(): string {\n internalCallIdCounter += 1;\n return `call_${internalCallIdCounter}`;\n}\n\nexport function stringifyForDebug(value: unknown): string {\n try {\n return JSON.stringify(value);\n } catch (_error) {\n return String(value);\n }\n}\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport function toError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error));\n}\n\nexport function normalizeRetryCount(retryCount: unknown): number {\n if (typeof retryCount !== 'number' || !Number.isFinite(retryCount)) {\n return 1;\n }\n\n return Math.max(0, Math.floor(retryCount));\n}\n\nexport function appendAIRequestFailureSummary<T extends Error>(\n error: T,\n attemptErrors: Array<{ attempt: number; error: unknown }>,\n maxAttempts: number,\n): T {\n const failedAttempts = attemptErrors.length;\n const retries = Math.max(0, failedAttempts - 1);\n const retryLabel = retries === 1 ? 'retry' : 'retries';\n const originalMessage = error.message;\n const previousAttemptErrors = attemptErrors.slice(0, -1);\n\n error.message = `AI model request failed after ${retries} ${retryLabel} (${failedAttempts}/${maxAttempts} attempts). Last error: ${originalMessage}`;\n\n if (previousAttemptErrors.length === 0) {\n return error;\n }\n\n const details = previousAttemptErrors\n .map(\n ({ attempt, error }) => `Attempt ${attempt}: ${getErrorMessage(error)}`,\n )\n .join('\\n');\n\n error.message = `${error.message}\\nPrevious AI call attempt errors:\\n${details}`;\n return error;\n}\n\nexport const buildUsageInfo = ({\n apiProtocol,\n stream,\n usageData,\n requestId,\n timeCost,\n totalTimeCost,\n retryCount,\n modelName,\n modelDescription,\n responseModelName,\n slot,\n internalCallId,\n}: {\n apiProtocol: NonNullable<AIUsageInfo['api_protocol']>;\n stream: boolean;\n usageData?: OpenAI.CompletionUsage;\n requestId?: string | null;\n timeCost?: number;\n totalTimeCost: number;\n retryCount: number;\n modelName: string;\n modelDescription: string;\n responseModelName?: string;\n slot: ModelRuntime['config']['slot'];\n internalCallId: string;\n}): AIUsageInfo | undefined => {\n if (!usageData) return undefined;\n\n const cachedInputTokens = (\n usageData as { prompt_tokens_details?: { cached_tokens?: number } }\n )?.prompt_tokens_details?.cached_tokens;\n\n return {\n ...usageData,\n api_protocol: apiProtocol,\n stream,\n prompt_tokens: usageData.prompt_tokens ?? 0,\n completion_tokens: usageData.completion_tokens ?? 0,\n total_tokens: usageData.total_tokens ?? 0,\n cached_input: cachedInputTokens ?? 0,\n time_cost: timeCost ?? 0,\n total_time_cost: totalTimeCost,\n retry_count: retryCount,\n model_name: modelName,\n model_description: modelDescription,\n response_model_name: responseModelName,\n slot,\n // Left undefined at the raw call layer. The agent's onUsage callback\n // fills it from modelConfig.slot for metrics collection, and task\n // layers use withUsageIntent() to stamp a more specific semantic\n // intent (e.g. 'planning', 'insight') when attaching usage to tasks.\n intent: undefined,\n request_id: requestId ?? undefined,\n // Internal stable ID for cross-path dedup when request_id is absent.\n [INTERNAL_CALL_ID_FIELD]: internalCallId,\n } satisfies AIUsageInfo;\n};\n\nexport const hasUsableText = (\n value: string | null | undefined,\n): value is string => typeof value === 'string' && value.trim().length > 0;\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","AIResponseParseError","Error","message","rawResponse","usage","rawAssistantOutput","reasoningContent","INTERNAL_CALL_ID_FIELD","internalCallIdCounter","nextInternalCallId","stringifyForDebug","value","JSON","_error","String","getErrorMessage","error","toError","normalizeRetryCount","retryCount","Number","Math","appendAIRequestFailureSummary","attemptErrors","maxAttempts","failedAttempts","retries","retryLabel","originalMessage","previousAttemptErrors","details","attempt","buildUsageInfo","apiProtocol","stream","usageData","requestId","timeCost","totalTimeCost","modelName","modelDescription","responseModelName","slot","internalCallId","cachedInputTokens","undefined","hasUsableText"],"mappings":"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"}
1
+ {"version":3,"file":"ai-model/service-caller/utils.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../src/ai-model/service-caller/utils.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import type { RawAssistantOutput } from '@/types';\nimport type { AIUsageInfo } from '@/types';\nimport type OpenAI from 'openai';\nimport type { ModelRuntime } from '../models';\n\n// Error class that preserves usage and rawResponse when AI call parsing fails\nexport class AIResponseParseError extends Error {\n usage?: AIUsageInfo;\n /**\n * Adapter-extracted content used by Midscene for parsing. This is not the\n * full provider response or choices[0].message.\n */\n rawResponse: string;\n rawAssistantOutput?: RawAssistantOutput;\n reasoningContent?: string;\n\n constructor(\n message: string,\n rawResponse: string,\n usage?: AIUsageInfo,\n rawAssistantOutput?: RawAssistantOutput,\n reasoningContent?: string,\n ) {\n super(message);\n this.name = 'AIResponseParseError';\n this.rawResponse = rawResponse;\n this.usage = usage;\n this.rawAssistantOutput = rawAssistantOutput;\n this.reasoningContent = reasoningContent;\n }\n}\n\n/**\n * Internal field name stamped onto AIUsageInfo by the shared model call pipeline.\n * Used for cross-path dedup when the provider does not return a request_id.\n */\nexport const INTERNAL_CALL_ID_FIELD = '_midscene_call_id';\n\nlet internalCallIdCounter = 0;\nexport function nextInternalCallId(): string {\n internalCallIdCounter += 1;\n return `call_${internalCallIdCounter}`;\n}\n\nexport function stringifyForDebug(value: unknown): string {\n try {\n return JSON.stringify(value);\n } catch (_error) {\n return String(value);\n }\n}\n\nfunction getErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport function toError(error: unknown): Error {\n return error instanceof Error ? error : new Error(String(error));\n}\n\nexport function normalizeRetryCount(retryCount: unknown): number {\n if (typeof retryCount !== 'number' || !Number.isFinite(retryCount)) {\n return 1;\n }\n\n return Math.max(0, Math.floor(retryCount));\n}\n\nexport function appendAIRequestFailureSummary<T extends Error>(\n error: T,\n attemptErrors: Array<{ attempt: number; error: unknown }>,\n maxAttempts: number,\n): T {\n const failedAttempts = attemptErrors.length;\n const retries = Math.max(0, failedAttempts - 1);\n const retryLabel = retries === 1 ? 'retry' : 'retries';\n const originalMessage = error.message;\n const previousAttemptErrors = attemptErrors.slice(0, -1);\n\n error.message = `AI model request failed after ${retries} ${retryLabel} (${failedAttempts}/${maxAttempts} attempts). Last error: ${originalMessage}`;\n\n if (previousAttemptErrors.length === 0) {\n return error;\n }\n\n const details = previousAttemptErrors\n .map(\n ({ attempt, error }) => `Attempt ${attempt}: ${getErrorMessage(error)}`,\n )\n .join('\\n');\n\n error.message = `${error.message}\\nPrevious AI call attempt errors:\\n${details}`;\n return error;\n}\n\nexport const buildUsageInfo = ({\n requestKind,\n stream,\n usageData,\n requestId,\n timeCost,\n totalTimeCost,\n retryCount,\n modelName,\n modelDescription,\n responseModelName,\n slot,\n internalCallId,\n}: {\n requestKind: NonNullable<AIUsageInfo['request_kind']>;\n stream: boolean;\n usageData?: OpenAI.CompletionUsage;\n requestId?: string | null;\n timeCost?: number;\n totalTimeCost: number;\n retryCount: number;\n modelName: string;\n modelDescription: string;\n responseModelName?: string;\n slot: ModelRuntime['config']['slot'];\n internalCallId: string;\n}): AIUsageInfo | undefined => {\n if (!usageData) return undefined;\n\n const cachedInputTokens = (\n usageData as { prompt_tokens_details?: { cached_tokens?: number } }\n )?.prompt_tokens_details?.cached_tokens;\n\n return {\n ...usageData,\n request_kind: requestKind,\n stream,\n prompt_tokens: usageData.prompt_tokens ?? 0,\n completion_tokens: usageData.completion_tokens ?? 0,\n total_tokens: usageData.total_tokens ?? 0,\n cached_input: cachedInputTokens ?? 0,\n time_cost: timeCost ?? 0,\n total_time_cost: totalTimeCost,\n retry_count: retryCount,\n model_name: modelName,\n model_description: modelDescription,\n response_model_name: responseModelName,\n slot,\n // Left undefined at the raw call layer. The agent's onUsage callback\n // fills it from modelConfig.slot for metrics collection, and task\n // layers use withUsageIntent() to stamp a more specific semantic\n // intent (e.g. 'planning', 'insight') when attaching usage to tasks.\n intent: undefined,\n request_id: requestId ?? undefined,\n // Internal stable ID for cross-path dedup when request_id is absent.\n [INTERNAL_CALL_ID_FIELD]: internalCallId,\n } satisfies AIUsageInfo;\n};\n\nexport const hasUsableText = (\n value: string | null | undefined,\n): value is string => typeof value === 'string' && value.trim().length > 0;\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","AIResponseParseError","Error","message","rawResponse","usage","rawAssistantOutput","reasoningContent","INTERNAL_CALL_ID_FIELD","internalCallIdCounter","nextInternalCallId","stringifyForDebug","value","JSON","_error","String","getErrorMessage","error","toError","normalizeRetryCount","retryCount","Number","Math","appendAIRequestFailureSummary","attemptErrors","maxAttempts","failedAttempts","retries","retryLabel","originalMessage","previousAttemptErrors","details","attempt","buildUsageInfo","requestKind","stream","usageData","requestId","timeCost","totalTimeCost","modelName","modelDescription","responseModelName","slot","internalCallId","cachedInputTokens","undefined","hasUsableText"],"mappings":"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"}
@@ -35,6 +35,9 @@ const external_validation_js_namespaceObject = require("./validation.js");
35
35
  function resolveLocateResultCoordinates(coordinates) {
36
36
  if (void 0 !== coordinates.normalizedBy && coordinates.normalizedBy <= 0) throw new Error(`locate result coordinates normalizedBy must be positive: ${coordinates.normalizedBy}`);
37
37
  return {
38
+ ...'bbox' === coordinates.shape ? {
39
+ boundsType: coordinates.boundsType ?? 'inclusive'
40
+ } : {},
38
41
  shape: coordinates.shape,
39
42
  order: coordinates.order ?? 'xy',
40
43
  normalizedBy: coordinates.normalizedBy,
@@ -53,11 +56,12 @@ function createLocateResultCodec(config) {
53
56
  const result = parseRawLocateValue(rawResult);
54
57
  const { preparedSize, contentSize = preparedSize } = context;
55
58
  (0, external_validation_js_namespaceObject.assertLocateResultStructure)(result);
56
- (0, external_validation_js_namespaceObject.assertLocateResultCoordinateRangeAndOrder)(result, preparedSize.width - 1, preparedSize.height - 1);
59
+ const edgeBounds = (0, external_types_js_namespaceObject.isBboxLocateResultValue)(result) && 'edges' === result.coordinatesMeta.boundsType;
60
+ (0, external_validation_js_namespaceObject.assertLocateResultCoordinateRangeAndOrder)(result, preparedSize.width - (edgeBounds ? 0 : 1), preparedSize.height - (edgeBounds ? 0 : 1));
57
61
  const center = (0, external_pixel_mapper_js_namespaceObject.clampPixelPointToSize)((0, external_pixel_mapper_js_namespaceObject.mapLocateResultToPixelPoint)(result, preparedSize), contentSize);
58
62
  const rect = (0, external_types_js_namespaceObject.isBboxLocateResultValue)(result) ? (()=>{
59
- const pixelBbox = (0, external_pixel_mapper_js_namespaceObject.clampPixelBboxToSize)((0, external_pixel_mapper_js_namespaceObject.mapLocateResultToPixelBbox)(result, preparedSize), contentSize);
60
- return (0, external_pixel_mapper_js_namespaceObject.pixelBboxToRect)(pixelBbox);
63
+ const pixelBbox = (0, external_pixel_mapper_js_namespaceObject.clampPixelBboxToSize)((0, external_pixel_mapper_js_namespaceObject.mapLocateResultToPixelBbox)(result, preparedSize), contentSize, result.coordinatesMeta.boundsType);
64
+ return (0, external_pixel_mapper_js_namespaceObject.pixelBboxToRect)(pixelBbox, result.coordinatesMeta.boundsType);
61
65
  })() : void 0;
62
66
  return {
63
67
  center,
@@ -1 +1 @@
1
- {"version":3,"file":"ai-model/shared/model-locate-result/factory.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../../src/ai-model/shared/model-locate-result/factory.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { parseNumericLocateResult } from './parse';\nimport {\n clampPixelBboxToSize,\n clampPixelPointToSize,\n mapLocateResultToPixelBbox,\n mapLocateResultToPixelPoint,\n pixelBboxToRect,\n} from './pixel-mapper';\nimport { createLocateResultPromptSpec } from './prompt-spec';\nimport { isBboxLocateResultValue } from './types';\nimport type {\n LocateResultCodec,\n LocateResultCoordinates,\n LocateResultFormatDefinition,\n ResolvedLocateResultCoordinates,\n} from './types';\nimport {\n assertLocateResultCoordinateRangeAndOrder,\n assertLocateResultStructure,\n} from './validation';\n\nexport function resolveLocateResultCoordinates(\n coordinates: LocateResultCoordinates,\n): ResolvedLocateResultCoordinates {\n if (coordinates.normalizedBy !== undefined && coordinates.normalizedBy <= 0) {\n throw new Error(\n `locate result coordinates normalizedBy must be positive: ${coordinates.normalizedBy}`,\n );\n }\n return {\n shape: coordinates.shape,\n order: coordinates.order ?? 'xy',\n normalizedBy: coordinates.normalizedBy,\n rounding: coordinates.rounding ?? 'round',\n };\n}\n\nexport function createLocateResultCodec(\n config: LocateResultFormatDefinition,\n): LocateResultCodec {\n const resolvedCoordinates = resolveLocateResultCoordinates(\n config.coordinates,\n );\n const parseRawLocateValue =\n config.parseRawLocateValue ??\n ((input) => parseNumericLocateResult(resolvedCoordinates, input));\n return {\n promptSpec: createLocateResultPromptSpec(resolvedCoordinates, {\n resultKey: config.resultKey,\n resultKeyAliases: config.resultKeyAliases,\n }),\n toPixelResult: (rawResult, context) => {\n const result = parseRawLocateValue(rawResult);\n const { preparedSize, contentSize = preparedSize } = context;\n assertLocateResultStructure(result);\n assertLocateResultCoordinateRangeAndOrder(\n result,\n preparedSize.width - 1,\n preparedSize.height - 1,\n );\n // Clamp the mapped center independently from the optional bbox so padding\n // removal cannot change the target by recomputing a clipped box's center.\n const center = clampPixelPointToSize(\n mapLocateResultToPixelPoint(result, preparedSize),\n contentSize,\n );\n // Preserve an original bbox as region metadata for DeepLocate search areas\n // and aiLocate's return value. Point-only results leave rect undefined;\n // click coordinates always use the independently calculated center.\n const rect = isBboxLocateResultValue(result)\n ? (() => {\n const pixelBbox = clampPixelBboxToSize(\n mapLocateResultToPixelBbox(result, preparedSize),\n contentSize,\n );\n return pixelBboxToRect(pixelBbox);\n })()\n : undefined;\n return { center, rect };\n },\n };\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","resolveLocateResultCoordinates","coordinates","undefined","Error","createLocateResultCodec","config","resolvedCoordinates","parseRawLocateValue","input","parseNumericLocateResult","createLocateResultPromptSpec","rawResult","context","result","preparedSize","contentSize","assertLocateResultStructure","assertLocateResultCoordinateRangeAndOrder","center","clampPixelPointToSize","mapLocateResultToPixelPoint","rect","isBboxLocateResultValue","pixelBbox","clampPixelBboxToSize","mapLocateResultToPixelBbox","pixelBboxToRect"],"mappings":";;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGD,oBAAoB,CAAC,CAACC,YAAYC,QAAQ,CAACF,oBAAoB,CAAC,CAAC,UAASE,MACzEC,OAAO,cAAc,CAAC,UAASD,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAF,oBAAoB,CAAC,GAAG,CAACI,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFL,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,eAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;;;;;ACeO,SAASI,+BACdC,WAAoC;IAEpC,IAAIA,AAA6BC,WAA7BD,YAAY,YAAY,IAAkBA,YAAY,YAAY,IAAI,GACxE,MAAM,IAAIE,MACR,CAAC,yDAAyD,EAAEF,YAAY,YAAY,EAAE;IAG1F,OAAO;QACL,OAAOA,YAAY,KAAK;QACxB,OAAOA,YAAY,KAAK,IAAI;QAC5B,cAAcA,YAAY,YAAY;QACtC,UAAUA,YAAY,QAAQ,IAAI;IACpC;AACF;AAEO,SAASG,wBACdC,MAAoC;IAEpC,MAAMC,sBAAsBN,+BAC1BK,OAAO,WAAW;IAEpB,MAAME,sBACJF,OAAO,mBAAmB,IACxB,EAAAG,QAAUC,AAAAA,IAAAA,kCAAAA,wBAAAA,AAAAA,EAAyBH,qBAAqBE,MAAK;IACjE,OAAO;QACL,YAAYE,AAAAA,IAAAA,wCAAAA,4BAAAA,AAAAA,EAA6BJ,qBAAqB;YAC5D,WAAWD,OAAO,SAAS;YAC3B,kBAAkBA,OAAO,gBAAgB;QAC3C;QACA,eAAe,CAACM,WAAWC;YACzB,MAAMC,SAASN,oBAAoBI;YACnC,MAAM,EAAEG,YAAY,EAAEC,cAAcD,YAAY,EAAE,GAAGF;YACrDI,IAAAA,uCAAAA,2BAAAA,AAAAA,EAA4BH;YAC5BI,IAAAA,uCAAAA,yCAAAA,AAAAA,EACEJ,QACAC,aAAa,KAAK,GAAG,GACrBA,aAAa,MAAM,GAAG;YAIxB,MAAMI,SAASC,AAAAA,IAAAA,yCAAAA,qBAAAA,AAAAA,EACbC,AAAAA,IAAAA,yCAAAA,2BAAAA,AAAAA,EAA4BP,QAAQC,eACpCC;YAKF,MAAMM,OAAOC,AAAAA,IAAAA,kCAAAA,uBAAAA,AAAAA,EAAwBT,UAChC,AAAC;gBACA,MAAMU,YAAYC,AAAAA,IAAAA,yCAAAA,oBAAAA,AAAAA,EAChBC,AAAAA,IAAAA,yCAAAA,0BAAAA,AAAAA,EAA2BZ,QAAQC,eACnCC;gBAEF,OAAOW,AAAAA,IAAAA,yCAAAA,eAAAA,AAAAA,EAAgBH;YACzB,OACArB;YACJ,OAAO;gBAAEgB;gBAAQG;YAAK;QACxB;IACF;AACF"}
1
+ {"version":3,"file":"ai-model/shared/model-locate-result/factory.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../../src/ai-model/shared/model-locate-result/factory.ts"],"sourcesContent":["__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import { parseNumericLocateResult } from './parse';\nimport {\n clampPixelBboxToSize,\n clampPixelPointToSize,\n mapLocateResultToPixelBbox,\n mapLocateResultToPixelPoint,\n pixelBboxToRect,\n} from './pixel-mapper';\nimport { createLocateResultPromptSpec } from './prompt-spec';\nimport { isBboxLocateResultValue } from './types';\nimport type {\n LocateResultCodec,\n LocateResultCoordinates,\n LocateResultFormatDefinition,\n ResolvedLocateResultCoordinates,\n} from './types';\nimport {\n assertLocateResultCoordinateRangeAndOrder,\n assertLocateResultStructure,\n} from './validation';\n\nexport function resolveLocateResultCoordinates(\n coordinates: LocateResultCoordinates,\n): ResolvedLocateResultCoordinates {\n if (coordinates.normalizedBy !== undefined && coordinates.normalizedBy <= 0) {\n throw new Error(\n `locate result coordinates normalizedBy must be positive: ${coordinates.normalizedBy}`,\n );\n }\n return {\n ...(coordinates.shape === 'bbox'\n ? { boundsType: coordinates.boundsType ?? 'inclusive' }\n : {}),\n shape: coordinates.shape,\n order: coordinates.order ?? 'xy',\n normalizedBy: coordinates.normalizedBy,\n rounding: coordinates.rounding ?? 'round',\n };\n}\n\nexport function createLocateResultCodec(\n config: LocateResultFormatDefinition,\n): LocateResultCodec {\n const resolvedCoordinates = resolveLocateResultCoordinates(\n config.coordinates,\n );\n const parseRawLocateValue =\n config.parseRawLocateValue ??\n ((input) => parseNumericLocateResult(resolvedCoordinates, input));\n return {\n promptSpec: createLocateResultPromptSpec(resolvedCoordinates, {\n resultKey: config.resultKey,\n resultKeyAliases: config.resultKeyAliases,\n }),\n toPixelResult: (rawResult, context) => {\n const result = parseRawLocateValue(rawResult);\n const { preparedSize, contentSize = preparedSize } = context;\n assertLocateResultStructure(result);\n const edgeBounds =\n isBboxLocateResultValue(result) &&\n result.coordinatesMeta.boundsType === 'edges';\n assertLocateResultCoordinateRangeAndOrder(\n result,\n preparedSize.width - (edgeBounds ? 0 : 1),\n preparedSize.height - (edgeBounds ? 0 : 1),\n );\n // Clamp the mapped center independently from the optional bbox so padding\n // removal cannot change the target by recomputing a clipped box's center.\n const center = clampPixelPointToSize(\n mapLocateResultToPixelPoint(result, preparedSize),\n contentSize,\n );\n // Preserve an original bbox as region metadata for DeepLocate search areas\n // and aiLocate's return value. Point-only results leave rect undefined;\n // click coordinates always use the independently calculated center.\n const rect = isBboxLocateResultValue(result)\n ? (() => {\n const pixelBbox = clampPixelBboxToSize(\n mapLocateResultToPixelBbox(result, preparedSize),\n contentSize,\n result.coordinatesMeta.boundsType,\n );\n return pixelBboxToRect(\n pixelBbox,\n result.coordinatesMeta.boundsType,\n );\n })()\n : undefined;\n return { center, rect };\n },\n };\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","resolveLocateResultCoordinates","coordinates","undefined","Error","createLocateResultCodec","config","resolvedCoordinates","parseRawLocateValue","input","parseNumericLocateResult","createLocateResultPromptSpec","rawResult","context","result","preparedSize","contentSize","assertLocateResultStructure","edgeBounds","isBboxLocateResultValue","assertLocateResultCoordinateRangeAndOrder","center","clampPixelPointToSize","mapLocateResultToPixelPoint","rect","pixelBbox","clampPixelBboxToSize","mapLocateResultToPixelBbox","pixelBboxToRect"],"mappings":";;;IAAAA,oBAAoB,CAAC,GAAG,CAAC,UAASC;QACjC,IAAI,IAAIC,OAAOD,WACR,IAAGD,oBAAoB,CAAC,CAACC,YAAYC,QAAQ,CAACF,oBAAoB,CAAC,CAAC,UAASE,MACzEC,OAAO,cAAc,CAAC,UAASD,KAAK;YAAE,YAAY;YAAM,KAAKD,UAAU,CAACC,IAAI;QAAC;IAGzF;;;ICNAF,oBAAoB,CAAC,GAAG,CAACI,KAAKC,OAAUF,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACC,KAAKC;;;ICClFL,oBAAoB,CAAC,GAAG,CAAC;QACxB,IAAG,AAAkB,eAAlB,OAAOM,UAA0BA,OAAO,WAAW,EACrDH,OAAO,cAAc,CAAC,UAASG,OAAO,WAAW,EAAE;YAAE,OAAO;QAAS;QAEtEH,OAAO,cAAc,CAAC,UAAS,cAAc;YAAE,OAAO;QAAK;IAC5D;;;;;;;;;;;;;ACeO,SAASI,+BACdC,WAAoC;IAEpC,IAAIA,AAA6BC,WAA7BD,YAAY,YAAY,IAAkBA,YAAY,YAAY,IAAI,GACxE,MAAM,IAAIE,MACR,CAAC,yDAAyD,EAAEF,YAAY,YAAY,EAAE;IAG1F,OAAO;QACL,GAAIA,AAAsB,WAAtBA,YAAY,KAAK,GACjB;YAAE,YAAYA,YAAY,UAAU,IAAI;QAAY,IACpD,CAAC,CAAC;QACN,OAAOA,YAAY,KAAK;QACxB,OAAOA,YAAY,KAAK,IAAI;QAC5B,cAAcA,YAAY,YAAY;QACtC,UAAUA,YAAY,QAAQ,IAAI;IACpC;AACF;AAEO,SAASG,wBACdC,MAAoC;IAEpC,MAAMC,sBAAsBN,+BAC1BK,OAAO,WAAW;IAEpB,MAAME,sBACJF,OAAO,mBAAmB,IACxB,EAAAG,QAAUC,AAAAA,IAAAA,kCAAAA,wBAAAA,AAAAA,EAAyBH,qBAAqBE,MAAK;IACjE,OAAO;QACL,YAAYE,AAAAA,IAAAA,wCAAAA,4BAAAA,AAAAA,EAA6BJ,qBAAqB;YAC5D,WAAWD,OAAO,SAAS;YAC3B,kBAAkBA,OAAO,gBAAgB;QAC3C;QACA,eAAe,CAACM,WAAWC;YACzB,MAAMC,SAASN,oBAAoBI;YACnC,MAAM,EAAEG,YAAY,EAAEC,cAAcD,YAAY,EAAE,GAAGF;YACrDI,IAAAA,uCAAAA,2BAAAA,AAAAA,EAA4BH;YAC5B,MAAMI,aACJC,AAAAA,IAAAA,kCAAAA,uBAAAA,AAAAA,EAAwBL,WACxBA,AAAsC,YAAtCA,OAAO,eAAe,CAAC,UAAU;YACnCM,IAAAA,uCAAAA,yCAAAA,AAAAA,EACEN,QACAC,aAAa,KAAK,GAAIG,CAAAA,aAAa,IAAI,IACvCH,aAAa,MAAM,GAAIG,CAAAA,aAAa,IAAI;YAI1C,MAAMG,SAASC,AAAAA,IAAAA,yCAAAA,qBAAAA,AAAAA,EACbC,AAAAA,IAAAA,yCAAAA,2BAAAA,AAAAA,EAA4BT,QAAQC,eACpCC;YAKF,MAAMQ,OAAOL,AAAAA,IAAAA,kCAAAA,uBAAAA,AAAAA,EAAwBL,UAChC,AAAC;gBACA,MAAMW,YAAYC,AAAAA,IAAAA,yCAAAA,oBAAAA,AAAAA,EAChBC,AAAAA,IAAAA,yCAAAA,0BAAAA,AAAAA,EAA2Bb,QAAQC,eACnCC,aACAF,OAAO,eAAe,CAAC,UAAU;gBAEnC,OAAOc,AAAAA,IAAAA,yCAAAA,eAAAA,AAAAA,EACLH,WACAX,OAAO,eAAe,CAAC,UAAU;YAErC,OACAX;YACJ,OAAO;gBAAEkB;gBAAQG;YAAK;QACxB;IACF;AACF"}
@@ -58,8 +58,14 @@ function clampPixelPointToSize([x, y], { width, height }) {
58
58
  clamp(y, 0, maxPixelCoordinate(height))
59
59
  ];
60
60
  }
61
- function clampPixelBboxToSize(pixelBbox, size) {
61
+ function clampPixelBboxToSize(pixelBbox, size, boundsType = 'inclusive') {
62
62
  const [left, top, right, bottom] = pixelBbox;
63
+ if ('edges' === boundsType) return [
64
+ clamp(left, 0, size.width),
65
+ clamp(top, 0, size.height),
66
+ clamp(right, 0, size.width),
67
+ clamp(bottom, 0, size.height)
68
+ ];
63
69
  return [
64
70
  ...clampPixelPointToSize([
65
71
  left,
@@ -71,12 +77,12 @@ function clampPixelBboxToSize(pixelBbox, size) {
71
77
  ], size)
72
78
  ];
73
79
  }
74
- function pixelBboxToRect([left, top, right, bottom]) {
80
+ function pixelBboxToRect([left, top, right, bottom], boundsType = 'inclusive') {
75
81
  return {
76
82
  left,
77
83
  top,
78
- width: right - left + 1,
79
- height: bottom - top + 1
84
+ width: right - left + ('inclusive' === boundsType ? 1 : 0),
85
+ height: bottom - top + ('inclusive' === boundsType ? 1 : 0)
80
86
  };
81
87
  }
82
88
  function mapLocateResultToPixelBbox(result, { width, height }) {