@midscene/core 1.8.10 → 1.9.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.
- package/dist/es/agent/agent.mjs +40 -50
- package/dist/es/agent/agent.mjs.map +1 -1
- package/dist/es/agent/task-builder.mjs +39 -19
- package/dist/es/agent/task-builder.mjs.map +1 -1
- package/dist/es/agent/tasks.mjs +24 -22
- package/dist/es/agent/tasks.mjs.map +1 -1
- package/dist/es/agent/utils.mjs +11 -14
- package/dist/es/agent/utils.mjs.map +1 -1
- package/dist/es/ai-model/connectivity.mjs +7 -3
- package/dist/es/ai-model/connectivity.mjs.map +1 -1
- package/dist/es/ai-model/errors.mjs +9 -0
- package/dist/es/ai-model/errors.mjs.map +1 -0
- package/dist/es/ai-model/index.mjs +3 -4
- package/dist/es/ai-model/inspect.mjs +132 -144
- package/dist/es/ai-model/inspect.mjs.map +1 -1
- package/dist/es/ai-model/llm-planning.mjs +46 -28
- package/dist/es/ai-model/llm-planning.mjs.map +1 -1
- package/dist/es/ai-model/{auto-glm → models/auto-glm}/actions.mjs +22 -44
- package/dist/es/ai-model/models/auto-glm/actions.mjs.map +1 -0
- package/dist/es/ai-model/models/auto-glm/adapter.mjs +45 -0
- package/dist/es/ai-model/models/auto-glm/adapter.mjs.map +1 -0
- package/dist/es/ai-model/models/auto-glm/locate.mjs +112 -0
- package/dist/es/ai-model/models/auto-glm/locate.mjs.map +1 -0
- package/dist/es/ai-model/models/auto-glm/parser.mjs.map +1 -0
- package/dist/es/ai-model/{auto-glm → models/auto-glm}/planning.mjs +6 -7
- package/dist/es/ai-model/models/auto-glm/planning.mjs.map +1 -0
- package/dist/es/ai-model/{auto-glm → models/auto-glm}/prompt.mjs +3 -11
- package/dist/es/ai-model/models/auto-glm/prompt.mjs.map +1 -0
- package/dist/es/ai-model/models/default.mjs +12 -0
- package/dist/es/ai-model/models/default.mjs.map +1 -0
- package/dist/es/ai-model/models/doubao.mjs +138 -0
- package/dist/es/ai-model/models/doubao.mjs.map +1 -0
- package/dist/es/ai-model/models/gemini.mjs +34 -0
- package/dist/es/ai-model/models/gemini.mjs.map +1 -0
- package/dist/es/ai-model/models/glm.mjs +37 -0
- package/dist/es/ai-model/models/glm.mjs.map +1 -0
- package/dist/es/ai-model/models/gpt.mjs +31 -0
- package/dist/es/ai-model/models/gpt.mjs.map +1 -0
- package/dist/es/ai-model/models/index.mjs +2 -0
- package/dist/es/ai-model/models/qwen.mjs +113 -0
- package/dist/es/ai-model/models/qwen.mjs.map +1 -0
- package/dist/es/ai-model/models/registry.mjs +45 -0
- package/dist/es/ai-model/models/registry.mjs.map +1 -0
- package/dist/es/ai-model/models/resolved.mjs +104 -0
- package/dist/es/ai-model/models/resolved.mjs.map +1 -0
- package/dist/es/ai-model/models/types.mjs +0 -0
- package/dist/es/ai-model/models/ui-tars/adapter.mjs +142 -0
- package/dist/es/ai-model/models/ui-tars/adapter.mjs.map +1 -0
- package/dist/es/ai-model/{ui-tars-planning.mjs → models/ui-tars/planning.mjs} +44 -62
- package/dist/es/ai-model/models/ui-tars/planning.mjs.map +1 -0
- package/dist/es/ai-model/prompt/extraction.mjs +3 -3
- package/dist/es/ai-model/prompt/extraction.mjs.map +1 -1
- package/dist/es/ai-model/prompt/llm-locator.mjs +11 -11
- package/dist/es/ai-model/prompt/llm-locator.mjs.map +1 -1
- package/dist/es/ai-model/prompt/llm-planning.mjs +25 -60
- package/dist/es/ai-model/prompt/llm-planning.mjs.map +1 -1
- package/dist/es/ai-model/prompt/llm-section-locator.mjs +15 -10
- package/dist/es/ai-model/prompt/llm-section-locator.mjs.map +1 -1
- package/dist/es/ai-model/prompt/locate-grounding-rules.mjs +9 -0
- package/dist/es/ai-model/prompt/locate-grounding-rules.mjs.map +1 -0
- package/dist/es/ai-model/prompt/locate-param-example.mjs +15 -0
- package/dist/es/ai-model/prompt/locate-param-example.mjs.map +1 -0
- package/dist/es/ai-model/prompt/playwright-generator.mjs +5 -5
- package/dist/es/ai-model/prompt/playwright-generator.mjs.map +1 -1
- package/dist/es/ai-model/prompt/yaml-generator.mjs +5 -5
- package/dist/es/ai-model/prompt/yaml-generator.mjs.map +1 -1
- package/dist/es/ai-model/prompts/locate-result-coordinates.mjs +107 -0
- package/dist/es/ai-model/prompts/locate-result-coordinates.mjs.map +1 -0
- package/dist/es/ai-model/service-caller/index.mjs +59 -190
- package/dist/es/ai-model/service-caller/index.mjs.map +1 -1
- package/dist/es/ai-model/service-caller/json.mjs +60 -0
- package/dist/es/ai-model/service-caller/json.mjs.map +1 -0
- package/dist/es/ai-model/shared/model-locate-result/bbox.mjs +68 -0
- package/dist/es/ai-model/shared/model-locate-result/bbox.mjs.map +1 -0
- package/dist/es/ai-model/shared/model-locate-result/factory.mjs +96 -0
- package/dist/es/ai-model/shared/model-locate-result/factory.mjs.map +1 -0
- package/dist/es/ai-model/shared/model-locate-result/index.mjs +3 -0
- package/dist/es/ai-model/shared/model-locate-result/parse.mjs +41 -0
- package/dist/es/ai-model/shared/model-locate-result/parse.mjs.map +1 -0
- package/dist/es/ai-model/shared/model-locate-result/pixel-bbox-mapper.mjs +64 -0
- package/dist/es/ai-model/shared/model-locate-result/pixel-bbox-mapper.mjs.map +1 -0
- package/dist/es/ai-model/shared/model-locate-result/types.mjs +0 -0
- package/dist/es/ai-model/types.mjs +0 -0
- package/dist/es/ai-model/workflows/image-preprocess.mjs +27 -0
- package/dist/es/ai-model/workflows/image-preprocess.mjs.map +1 -0
- package/dist/es/ai-model/workflows/inspect/index.mjs +2 -0
- package/dist/es/ai-model/workflows/inspect/locate-result-rect.mjs +23 -0
- package/dist/es/ai-model/workflows/inspect/locate-result-rect.mjs.map +1 -0
- package/dist/es/ai-model/workflows/inspect/search-area-mapping.mjs +18 -0
- package/dist/es/ai-model/workflows/inspect/search-area-mapping.mjs.map +1 -0
- package/dist/es/ai-model/workflows/inspect/types.mjs +0 -0
- package/dist/es/ai-model/workflows/planning/index.mjs +5 -0
- package/dist/es/ai-model/workflows/planning/index.mjs.map +1 -0
- package/dist/es/ai-model/workflows/planning/types.mjs +0 -0
- package/dist/es/common.mjs +2 -174
- package/dist/es/common.mjs.map +1 -1
- package/dist/es/device/index.mjs.map +1 -1
- package/dist/es/service/index.mjs +96 -69
- package/dist/es/service/index.mjs.map +1 -1
- package/dist/es/types.mjs.map +1 -1
- package/dist/es/utils.mjs +2 -2
- package/dist/es/yaml/player.mjs +4 -3
- package/dist/es/yaml/player.mjs.map +1 -1
- package/dist/lib/agent/agent.js +43 -53
- package/dist/lib/agent/agent.js.map +1 -1
- package/dist/lib/agent/task-builder.js +38 -18
- package/dist/lib/agent/task-builder.js.map +1 -1
- package/dist/lib/agent/tasks.js +23 -21
- package/dist/lib/agent/tasks.js.map +1 -1
- package/dist/lib/agent/utils.js +17 -17
- package/dist/lib/agent/utils.js.map +1 -1
- package/dist/lib/ai-model/connectivity.js +7 -3
- package/dist/lib/ai-model/connectivity.js.map +1 -1
- package/dist/lib/ai-model/errors.js +46 -0
- package/dist/lib/ai-model/errors.js.map +1 -0
- package/dist/lib/ai-model/index.js +7 -14
- package/dist/lib/ai-model/inspect.js +141 -144
- package/dist/lib/ai-model/inspect.js.map +1 -1
- package/dist/lib/ai-model/llm-planning.js +44 -26
- package/dist/lib/ai-model/llm-planning.js.map +1 -1
- package/dist/lib/ai-model/{auto-glm → models/auto-glm}/actions.js +22 -44
- package/dist/lib/ai-model/models/auto-glm/actions.js.map +1 -0
- package/dist/lib/ai-model/models/auto-glm/adapter.js +79 -0
- package/dist/lib/ai-model/models/auto-glm/adapter.js.map +1 -0
- package/dist/lib/ai-model/models/auto-glm/locate.js +146 -0
- package/dist/lib/ai-model/models/auto-glm/locate.js.map +1 -0
- package/dist/lib/ai-model/models/auto-glm/parser.js.map +1 -0
- package/dist/lib/ai-model/{auto-glm → models/auto-glm}/planning.js +8 -9
- package/dist/lib/ai-model/models/auto-glm/planning.js.map +1 -0
- package/dist/lib/ai-model/{auto-glm → models/auto-glm}/prompt.js +14 -16
- package/dist/lib/ai-model/models/auto-glm/prompt.js.map +1 -0
- package/dist/lib/ai-model/{auto-glm/util.js → models/default.js} +13 -13
- package/dist/lib/ai-model/models/default.js.map +1 -0
- package/dist/lib/ai-model/models/doubao.js +184 -0
- package/dist/lib/ai-model/models/doubao.js.map +1 -0
- package/dist/lib/ai-model/models/gemini.js +68 -0
- package/dist/lib/ai-model/models/gemini.js.map +1 -0
- package/dist/lib/ai-model/models/glm.js +71 -0
- package/dist/lib/ai-model/models/glm.js.map +1 -0
- package/dist/lib/ai-model/models/gpt.js +65 -0
- package/dist/lib/ai-model/models/gpt.js.map +1 -0
- package/dist/lib/ai-model/{service-caller/image-detail.js → models/index.js} +8 -7
- package/dist/lib/ai-model/models/index.js.map +1 -0
- package/dist/lib/ai-model/models/qwen.js +147 -0
- package/dist/lib/ai-model/models/qwen.js.map +1 -0
- package/dist/lib/ai-model/models/registry.js +85 -0
- package/dist/lib/ai-model/models/registry.js.map +1 -0
- package/dist/lib/ai-model/models/resolved.js +138 -0
- package/dist/lib/ai-model/models/resolved.js.map +1 -0
- package/dist/lib/ai-model/models/types.js +20 -0
- package/dist/lib/ai-model/models/types.js.map +1 -0
- package/dist/lib/ai-model/models/ui-tars/adapter.js +176 -0
- package/dist/lib/ai-model/models/ui-tars/adapter.js.map +1 -0
- package/dist/lib/ai-model/{ui-tars-planning.js → models/ui-tars/planning.js} +44 -62
- package/dist/lib/ai-model/models/ui-tars/planning.js.map +1 -0
- package/dist/lib/ai-model/prompt/extraction.js +3 -3
- package/dist/lib/ai-model/prompt/extraction.js.map +1 -1
- package/dist/lib/ai-model/prompt/llm-locator.js +11 -11
- package/dist/lib/ai-model/prompt/llm-locator.js.map +1 -1
- package/dist/lib/ai-model/prompt/llm-planning.js +25 -60
- package/dist/lib/ai-model/prompt/llm-planning.js.map +1 -1
- package/dist/lib/ai-model/prompt/llm-section-locator.js +15 -10
- package/dist/lib/ai-model/prompt/llm-section-locator.js.map +1 -1
- package/dist/lib/ai-model/prompt/locate-grounding-rules.js +43 -0
- package/dist/lib/ai-model/prompt/locate-grounding-rules.js.map +1 -0
- package/dist/lib/ai-model/prompt/locate-param-example.js +52 -0
- package/dist/lib/ai-model/prompt/locate-param-example.js.map +1 -0
- package/dist/lib/ai-model/prompt/playwright-generator.js +5 -5
- package/dist/lib/ai-model/prompt/playwright-generator.js.map +1 -1
- package/dist/lib/ai-model/prompt/yaml-generator.js +5 -5
- package/dist/lib/ai-model/prompt/yaml-generator.js.map +1 -1
- package/dist/lib/ai-model/prompts/locate-result-coordinates.js +150 -0
- package/dist/lib/ai-model/prompts/locate-result-coordinates.js.map +1 -0
- package/dist/lib/ai-model/service-caller/index.js +68 -199
- package/dist/lib/ai-model/service-caller/index.js.map +1 -1
- package/dist/lib/ai-model/service-caller/json.js +100 -0
- package/dist/lib/ai-model/service-caller/json.js.map +1 -0
- package/dist/lib/ai-model/shared/model-locate-result/bbox.js +117 -0
- package/dist/lib/ai-model/shared/model-locate-result/bbox.js.map +1 -0
- package/dist/lib/ai-model/shared/model-locate-result/factory.js +130 -0
- package/dist/lib/ai-model/shared/model-locate-result/factory.js.map +1 -0
- package/dist/lib/ai-model/{prompt/common.js → shared/model-locate-result/index.js} +9 -9
- package/dist/lib/ai-model/shared/model-locate-result/index.js.map +1 -0
- package/dist/lib/ai-model/shared/model-locate-result/parse.js +78 -0
- package/dist/lib/ai-model/shared/model-locate-result/parse.js.map +1 -0
- package/dist/lib/ai-model/shared/model-locate-result/pixel-bbox-mapper.js +98 -0
- package/dist/lib/ai-model/shared/model-locate-result/pixel-bbox-mapper.js.map +1 -0
- package/dist/lib/ai-model/shared/model-locate-result/types.js +20 -0
- package/dist/lib/ai-model/shared/model-locate-result/types.js.map +1 -0
- package/dist/lib/ai-model/types.js +20 -0
- package/dist/lib/ai-model/types.js.map +1 -0
- package/dist/lib/ai-model/workflows/image-preprocess.js +61 -0
- package/dist/lib/ai-model/workflows/image-preprocess.js.map +1 -0
- package/dist/lib/ai-model/workflows/inspect/index.js +50 -0
- package/dist/lib/ai-model/workflows/inspect/index.js.map +1 -0
- package/dist/lib/ai-model/workflows/inspect/locate-result-rect.js +60 -0
- package/dist/lib/ai-model/workflows/inspect/locate-result-rect.js.map +1 -0
- package/dist/lib/ai-model/workflows/inspect/search-area-mapping.js +52 -0
- package/dist/lib/ai-model/workflows/inspect/search-area-mapping.js.map +1 -0
- package/dist/lib/ai-model/workflows/inspect/types.js +20 -0
- package/dist/lib/ai-model/workflows/inspect/types.js.map +1 -0
- package/dist/lib/ai-model/{model-family.js → workflows/planning/index.js} +6 -7
- package/dist/lib/ai-model/workflows/planning/index.js.map +1 -0
- package/dist/lib/ai-model/workflows/planning/types.js +20 -0
- package/dist/lib/ai-model/workflows/planning/types.js.map +1 -0
- package/dist/lib/common.js +4 -206
- package/dist/lib/common.js.map +1 -1
- package/dist/lib/device/index.js.map +1 -1
- package/dist/lib/service/index.js +96 -69
- package/dist/lib/service/index.js.map +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/utils.js +2 -2
- package/dist/lib/yaml/player.js +4 -3
- package/dist/lib/yaml/player.js.map +1 -1
- package/dist/types/agent/agent.d.ts +14 -6
- package/dist/types/agent/task-builder.d.ts +2 -2
- package/dist/types/agent/tasks.d.ts +6 -6
- package/dist/types/agent/utils.d.ts +8 -5
- package/dist/types/ai-model/errors.d.ts +2 -0
- package/dist/types/ai-model/index.d.ts +2 -4
- package/dist/types/ai-model/inspect.d.ts +13 -33
- package/dist/types/ai-model/llm-planning.d.ts +6 -17
- package/dist/types/ai-model/{auto-glm → models/auto-glm}/actions.d.ts +2 -2
- package/dist/types/ai-model/models/auto-glm/adapter.d.ts +5 -0
- package/dist/types/ai-model/models/auto-glm/locate.d.ts +3 -0
- package/dist/types/ai-model/models/auto-glm/planning.d.ts +3 -0
- package/dist/types/ai-model/models/auto-glm/prompt.d.ts +4 -0
- package/dist/types/ai-model/models/default.d.ts +2 -0
- package/dist/types/ai-model/models/doubao.d.ts +10 -0
- package/dist/types/ai-model/models/gemini.d.ts +18 -0
- package/dist/types/ai-model/models/glm.d.ts +18 -0
- package/dist/types/ai-model/models/gpt.d.ts +18 -0
- package/dist/types/ai-model/models/index.d.ts +2 -0
- package/dist/types/ai-model/models/qwen.d.ts +30 -0
- package/dist/types/ai-model/models/registry.d.ts +81 -0
- package/dist/types/ai-model/models/resolved.d.ts +9 -0
- package/dist/types/ai-model/models/types.d.ts +102 -0
- package/dist/types/ai-model/models/ui-tars/adapter.d.ts +6 -0
- package/dist/types/ai-model/{ui-tars-planning.d.ts → models/ui-tars/planning.d.ts} +7 -11
- package/dist/types/ai-model/prompt/llm-locator.d.ts +2 -2
- package/dist/types/ai-model/prompt/llm-planning.d.ts +5 -5
- package/dist/types/ai-model/prompt/llm-section-locator.d.ts +2 -2
- package/dist/types/ai-model/prompt/locate-grounding-rules.d.ts +1 -0
- package/dist/types/ai-model/prompt/locate-param-example.d.ts +3 -0
- package/dist/types/ai-model/prompt/playwright-generator.d.ts +3 -3
- package/dist/types/ai-model/prompt/yaml-generator.d.ts +3 -3
- package/dist/types/ai-model/prompts/locate-result-coordinates.d.ts +6 -0
- package/dist/types/ai-model/service-caller/index.d.ts +19 -27
- package/dist/types/ai-model/service-caller/json.d.ts +9 -0
- package/dist/types/ai-model/shared/model-locate-result/bbox.d.ts +7 -0
- package/dist/types/ai-model/shared/model-locate-result/factory.d.ts +2 -0
- package/dist/types/ai-model/shared/model-locate-result/index.d.ts +3 -0
- package/dist/types/ai-model/shared/model-locate-result/parse.d.ts +5 -0
- package/dist/types/ai-model/shared/model-locate-result/pixel-bbox-mapper.d.ts +7 -0
- package/dist/types/ai-model/shared/model-locate-result/types.d.ts +157 -0
- package/dist/types/ai-model/types.d.ts +2 -0
- package/dist/types/ai-model/workflows/image-preprocess.d.ts +30 -0
- package/dist/types/ai-model/workflows/inspect/index.d.ts +1 -0
- package/dist/types/ai-model/workflows/inspect/locate-result-rect.d.ts +4 -0
- package/dist/types/ai-model/workflows/inspect/search-area-mapping.d.ts +3 -0
- package/dist/types/ai-model/workflows/inspect/types.d.ts +37 -0
- package/dist/types/ai-model/workflows/planning/index.d.ts +2 -0
- package/dist/types/ai-model/workflows/planning/types.d.ts +15 -0
- package/dist/types/common.d.ts +0 -30
- package/dist/types/device/index.d.ts +22 -22
- package/dist/types/service/index.d.ts +5 -4
- package/dist/types/types.d.ts +21 -9
- package/dist/types/yaml.d.ts +8 -2
- package/package.json +2 -2
- package/dist/es/ai-model/auto-glm/actions.mjs.map +0 -1
- package/dist/es/ai-model/auto-glm/index.mjs +0 -6
- package/dist/es/ai-model/auto-glm/parser.mjs.map +0 -1
- package/dist/es/ai-model/auto-glm/planning.mjs.map +0 -1
- package/dist/es/ai-model/auto-glm/prompt.mjs.map +0 -1
- package/dist/es/ai-model/auto-glm/util.mjs +0 -9
- package/dist/es/ai-model/auto-glm/util.mjs.map +0 -1
- package/dist/es/ai-model/model-family.mjs +0 -6
- package/dist/es/ai-model/model-family.mjs.map +0 -1
- package/dist/es/ai-model/prompt/common.mjs +0 -8
- package/dist/es/ai-model/prompt/common.mjs.map +0 -1
- package/dist/es/ai-model/service-caller/image-detail.mjs +0 -6
- package/dist/es/ai-model/service-caller/image-detail.mjs.map +0 -1
- package/dist/es/ai-model/ui-tars-planning.mjs.map +0 -1
- package/dist/lib/ai-model/auto-glm/actions.js.map +0 -1
- package/dist/lib/ai-model/auto-glm/index.js +0 -66
- package/dist/lib/ai-model/auto-glm/index.js.map +0 -1
- package/dist/lib/ai-model/auto-glm/parser.js.map +0 -1
- package/dist/lib/ai-model/auto-glm/planning.js.map +0 -1
- package/dist/lib/ai-model/auto-glm/prompt.js.map +0 -1
- package/dist/lib/ai-model/auto-glm/util.js.map +0 -1
- package/dist/lib/ai-model/model-family.js.map +0 -1
- package/dist/lib/ai-model/prompt/common.js.map +0 -1
- package/dist/lib/ai-model/service-caller/image-detail.js.map +0 -1
- package/dist/lib/ai-model/ui-tars-planning.js.map +0 -1
- package/dist/types/ai-model/auto-glm/index.d.ts +0 -6
- package/dist/types/ai-model/auto-glm/planning.d.ts +0 -12
- package/dist/types/ai-model/auto-glm/prompt.d.ts +0 -27
- package/dist/types/ai-model/auto-glm/util.d.ts +0 -13
- package/dist/types/ai-model/model-family.d.ts +0 -7
- package/dist/types/ai-model/prompt/common.d.ts +0 -2
- package/dist/types/ai-model/service-caller/image-detail.d.ts +0 -2
- /package/dist/es/ai-model/{auto-glm → models/auto-glm}/parser.mjs +0 -0
- /package/dist/lib/ai-model/{auto-glm → models/auto-glm}/parser.js +0 -0
- /package/dist/types/ai-model/{auto-glm → models/auto-glm}/parser.d.ts +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
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
|
+
extractJSONFromCodeBlock: ()=>extractJSONFromCodeBlock,
|
|
28
|
+
normalJsonParser: ()=>normalJsonParser,
|
|
29
|
+
safeParseJson: ()=>safeParseJson
|
|
30
|
+
});
|
|
31
|
+
const external_jsonrepair_namespaceObject = require("jsonrepair");
|
|
32
|
+
function extractJSONFromCodeBlock(response) {
|
|
33
|
+
try {
|
|
34
|
+
const jsonMatch = response.match(/^\s*(\{[\s\S]*\})\s*$/);
|
|
35
|
+
if (jsonMatch) return jsonMatch[1];
|
|
36
|
+
const codeBlockMatch = response.match(/```(?:json)?\s*(\{[\s\S]*?\})\s*```/);
|
|
37
|
+
if (codeBlockMatch) return codeBlockMatch[1];
|
|
38
|
+
const jsonLikeMatch = response.match(/\{[\s\S]*\}/);
|
|
39
|
+
if (jsonLikeMatch) return jsonLikeMatch[0];
|
|
40
|
+
} catch {}
|
|
41
|
+
return response;
|
|
42
|
+
}
|
|
43
|
+
function normalizeJsonObject(obj, context = {}) {
|
|
44
|
+
if (null == obj) return obj;
|
|
45
|
+
if (Array.isArray(obj)) return obj.map((item)=>normalizeJsonObject(item, context));
|
|
46
|
+
if ('object' == typeof obj) {
|
|
47
|
+
const normalized = {};
|
|
48
|
+
for (const [key, value] of Object.entries(obj)){
|
|
49
|
+
const trimmedKey = key.trim();
|
|
50
|
+
const preserveStringValue = context.preserveStringValueKeys?.includes(trimmedKey) ?? false;
|
|
51
|
+
const normalizedValue = 'string' == typeof value ? preserveStringValue ? value : value.trim() : normalizeJsonObject(value, context);
|
|
52
|
+
normalized[trimmedKey] = normalizedValue;
|
|
53
|
+
}
|
|
54
|
+
return normalized;
|
|
55
|
+
}
|
|
56
|
+
if ('string' == typeof obj) return obj.trim();
|
|
57
|
+
return obj;
|
|
58
|
+
}
|
|
59
|
+
const parseNormalJson = (input, rawResponse, context)=>{
|
|
60
|
+
if (input?.match(/\((\d+),(\d+)\)/)) return input.match(/\((\d+),(\d+)\)/)?.slice(1).map(Number);
|
|
61
|
+
let parsed;
|
|
62
|
+
let lastError;
|
|
63
|
+
try {
|
|
64
|
+
parsed = JSON.parse(input);
|
|
65
|
+
return normalizeJsonObject(parsed, context);
|
|
66
|
+
} catch (error) {
|
|
67
|
+
lastError = error;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
parsed = JSON.parse((0, external_jsonrepair_namespaceObject.jsonrepair)(input));
|
|
71
|
+
return normalizeJsonObject(parsed, context);
|
|
72
|
+
} catch (error) {
|
|
73
|
+
lastError = error;
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
parsed: void 0,
|
|
77
|
+
lastError,
|
|
78
|
+
rawResponse
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
function safeParseJson(raw, context) {
|
|
82
|
+
const cleanJsonString = extractJSONFromCodeBlock(raw);
|
|
83
|
+
const result = parseNormalJson(cleanJsonString, raw, context);
|
|
84
|
+
if (result && 'object' == typeof result && 'parsed' in result && void 0 === result.parsed) throw Error(`failed to parse LLM response into JSON. Error - ${String(result.lastError ?? 'unknown error')}. Response - \n ${raw}`);
|
|
85
|
+
return result;
|
|
86
|
+
}
|
|
87
|
+
const normalJsonParser = safeParseJson;
|
|
88
|
+
exports.extractJSONFromCodeBlock = __webpack_exports__.extractJSONFromCodeBlock;
|
|
89
|
+
exports.normalJsonParser = __webpack_exports__.normalJsonParser;
|
|
90
|
+
exports.safeParseJson = __webpack_exports__.safeParseJson;
|
|
91
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
92
|
+
"extractJSONFromCodeBlock",
|
|
93
|
+
"normalJsonParser",
|
|
94
|
+
"safeParseJson"
|
|
95
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
96
|
+
Object.defineProperty(exports, '__esModule', {
|
|
97
|
+
value: true
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-model/service-caller/json.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../src/ai-model/service-caller/json.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 { jsonrepair } from 'jsonrepair';\n\nexport function extractJSONFromCodeBlock(response: string) {\n try {\n // First, try to match a JSON object directly in the response\n const jsonMatch = response.match(/^\\s*(\\{[\\s\\S]*\\})\\s*$/);\n if (jsonMatch) {\n return jsonMatch[1];\n }\n\n // If no direct JSON object is found, try to extract JSON from a code block\n const codeBlockMatch = response.match(\n /```(?:json)?\\s*(\\{[\\s\\S]*?\\})\\s*```/,\n );\n if (codeBlockMatch) {\n return codeBlockMatch[1];\n }\n\n // If no code block is found, try to find a JSON-like structure in the text\n const jsonLikeMatch = response.match(/\\{[\\s\\S]*\\}/);\n if (jsonLikeMatch) {\n return jsonLikeMatch[0];\n }\n } catch {}\n // If no JSON-like structure is found, return the original response\n return response;\n}\n\nexport type JsonParserSource =\n | 'generic-object'\n | 'planning-action-param'\n | 'locate'\n | 'section-locator';\n\nexport interface JsonParserContext {\n source: JsonParserSource;\n preserveStringValueKeys?: string[];\n}\n\nexport type JsonParser = (raw: string, context?: JsonParserContext) => unknown;\n\n/**\n * Normalize a parsed JSON object by trimming whitespace from:\n * 1. All object keys (e.g., \" prompt \" -> \"prompt\")\n * 2. All string values (e.g., \" Tap \" -> \"Tap\")\n * This handles LLM output that may include leading/trailing spaces.\n */\nfunction normalizeJsonObject(\n obj: any,\n context: Pick<JsonParserContext, 'preserveStringValueKeys'> = {},\n): any {\n // Handle null and undefined\n if (obj === null || obj === undefined) {\n return obj;\n }\n\n // Handle arrays - recursively normalize each element\n if (Array.isArray(obj)) {\n return obj.map((item) => normalizeJsonObject(item, context));\n }\n\n // Handle objects\n if (typeof obj === 'object') {\n const normalized: any = {};\n\n for (const [key, value] of Object.entries(obj)) {\n // Trim the key to remove leading/trailing spaces\n const trimmedKey = key.trim();\n const preserveStringValue =\n context.preserveStringValueKeys?.includes(trimmedKey) ?? false;\n\n const normalizedValue =\n typeof value === 'string'\n ? preserveStringValue\n ? value\n : value.trim()\n : normalizeJsonObject(value, context);\n\n normalized[trimmedKey] = normalizedValue;\n }\n\n return normalized;\n }\n\n // Handle primitive strings\n if (typeof obj === 'string') {\n return obj.trim();\n }\n\n // Return other primitives as-is\n return obj;\n}\n\nconst parseNormalJson = (\n input: string,\n rawResponse: string,\n context?: JsonParserContext,\n) => {\n if (input?.match(/\\((\\d+),(\\d+)\\)/)) {\n return input\n .match(/\\((\\d+),(\\d+)\\)/)\n ?.slice(1)\n .map(Number);\n }\n\n let parsed: any;\n let lastError: unknown;\n try {\n parsed = JSON.parse(input);\n return normalizeJsonObject(parsed, context);\n } catch (error) {\n lastError = error;\n }\n try {\n parsed = JSON.parse(jsonrepair(input));\n return normalizeJsonObject(parsed, context);\n } catch (error) {\n lastError = error;\n }\n\n return { parsed: undefined, lastError, rawResponse };\n};\n\nexport function safeParseJson(raw: string, context?: JsonParserContext) {\n const cleanJsonString = extractJSONFromCodeBlock(raw);\n const result = parseNormalJson(cleanJsonString, raw, context);\n if (\n result &&\n typeof result === 'object' &&\n 'parsed' in result &&\n result.parsed === undefined\n ) {\n throw Error(\n `failed to parse LLM response into JSON. Error - ${String(\n result.lastError ?? 'unknown error',\n )}. Response - \\n ${raw}`,\n );\n }\n return result;\n}\n\nexport const normalJsonParser: JsonParser = safeParseJson;\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","extractJSONFromCodeBlock","response","jsonMatch","codeBlockMatch","jsonLikeMatch","normalizeJsonObject","context","Array","item","normalized","value","trimmedKey","preserveStringValue","normalizedValue","parseNormalJson","input","rawResponse","Number","parsed","lastError","JSON","error","jsonrepair","undefined","safeParseJson","raw","cleanJsonString","result","Error","String","normalJsonParser"],"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;;;;;;;;;;ACJO,SAASI,yBAAyBC,QAAgB;IACvD,IAAI;QAEF,MAAMC,YAAYD,SAAS,KAAK,CAAC;QACjC,IAAIC,WACF,OAAOA,SAAS,CAAC,EAAE;QAIrB,MAAMC,iBAAiBF,SAAS,KAAK,CACnC;QAEF,IAAIE,gBACF,OAAOA,cAAc,CAAC,EAAE;QAI1B,MAAMC,gBAAgBH,SAAS,KAAK,CAAC;QACrC,IAAIG,eACF,OAAOA,aAAa,CAAC,EAAE;IAE3B,EAAE,OAAM,CAAC;IAET,OAAOH;AACT;AAqBA,SAASI,oBACPR,GAAQ,EACRS,UAA8D,CAAC,CAAC;IAGhE,IAAIT,QAAAA,KACF,OAAOA;IAIT,IAAIU,MAAM,OAAO,CAACV,MAChB,OAAOA,IAAI,GAAG,CAAC,CAACW,OAASH,oBAAoBG,MAAMF;IAIrD,IAAI,AAAe,YAAf,OAAOT,KAAkB;QAC3B,MAAMY,aAAkB,CAAC;QAEzB,KAAK,MAAM,CAACd,KAAKe,MAAM,IAAId,OAAO,OAAO,CAACC,KAAM;YAE9C,MAAMc,aAAahB,IAAI,IAAI;YAC3B,MAAMiB,sBACJN,QAAQ,uBAAuB,EAAE,SAASK,eAAe;YAE3D,MAAME,kBACJ,AAAiB,YAAjB,OAAOH,QACHE,sBACEF,QACAA,MAAM,IAAI,KACZL,oBAAoBK,OAAOJ;YAEjCG,UAAU,CAACE,WAAW,GAAGE;QAC3B;QAEA,OAAOJ;IACT;IAGA,IAAI,AAAe,YAAf,OAAOZ,KACT,OAAOA,IAAI,IAAI;IAIjB,OAAOA;AACT;AAEA,MAAMiB,kBAAkB,CACtBC,OACAC,aACAV;IAEA,IAAIS,OAAO,MAAM,oBACf,OAAOA,MACJ,KAAK,CAAC,oBACL,MAAM,GACP,IAAIE;IAGT,IAAIC;IACJ,IAAIC;IACJ,IAAI;QACFD,SAASE,KAAK,KAAK,CAACL;QACpB,OAAOV,oBAAoBa,QAAQZ;IACrC,EAAE,OAAOe,OAAO;QACdF,YAAYE;IACd;IACA,IAAI;QACFH,SAASE,KAAK,KAAK,CAACE,AAAAA,IAAAA,oCAAAA,UAAAA,AAAAA,EAAWP;QAC/B,OAAOV,oBAAoBa,QAAQZ;IACrC,EAAE,OAAOe,OAAO;QACdF,YAAYE;IACd;IAEA,OAAO;QAAE,QAAQE;QAAWJ;QAAWH;IAAY;AACrD;AAEO,SAASQ,cAAcC,GAAW,EAAEnB,OAA2B;IACpE,MAAMoB,kBAAkB1B,yBAAyByB;IACjD,MAAME,SAASb,gBAAgBY,iBAAiBD,KAAKnB;IACrD,IACEqB,UACA,AAAkB,YAAlB,OAAOA,UACP,YAAYA,UACZA,AAAkBJ,WAAlBI,OAAO,MAAM,EAEb,MAAMC,MACJ,CAAC,gDAAgD,EAAEC,OACjDF,OAAO,SAAS,IAAI,iBACpB,gBAAgB,EAAEF,KAAK;IAG7B,OAAOE;AACT;AAEO,MAAMG,mBAA+BN"}
|
|
@@ -0,0 +1,117 @@
|
|
|
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
|
+
expandPointToBbox: ()=>expandPointToBbox,
|
|
28
|
+
finalizePixelBbox: ()=>finalizePixelBbox,
|
|
29
|
+
finalizeSectionLocatePixelBboxGroup: ()=>finalizeSectionLocatePixelBboxGroup,
|
|
30
|
+
mapNormalizedCoordinatesToPixelBbox: ()=>mapNormalizedCoordinatesToPixelBbox,
|
|
31
|
+
maxPixelIndex: ()=>maxPixelIndex,
|
|
32
|
+
normalizedCoordinateToPixelIndex: ()=>normalizedCoordinateToPixelIndex
|
|
33
|
+
});
|
|
34
|
+
function maxPixelIndex(size) {
|
|
35
|
+
return Math.max(size - 1, 0);
|
|
36
|
+
}
|
|
37
|
+
function normalizedCoordinateToPixelIndex(value, normalizedBy, size) {
|
|
38
|
+
return Math.round(value * maxPixelIndex(size) / normalizedBy);
|
|
39
|
+
}
|
|
40
|
+
function mapNormalizedCoordinatesToPixelBbox(coordinates, normalizedBy, width, height) {
|
|
41
|
+
const [left, top, right, bottom] = coordinates;
|
|
42
|
+
return [
|
|
43
|
+
normalizedCoordinateToPixelIndex(left, normalizedBy, width),
|
|
44
|
+
normalizedCoordinateToPixelIndex(top, normalizedBy, height),
|
|
45
|
+
normalizedCoordinateToPixelIndex(right, normalizedBy, width),
|
|
46
|
+
normalizedCoordinateToPixelIndex(bottom, normalizedBy, height)
|
|
47
|
+
];
|
|
48
|
+
}
|
|
49
|
+
function expandPointToBbox(x, y, maxX, maxY, halfSize) {
|
|
50
|
+
return [
|
|
51
|
+
Math.max(0, x - halfSize),
|
|
52
|
+
Math.max(0, y - halfSize),
|
|
53
|
+
Math.min(maxX, x + halfSize),
|
|
54
|
+
Math.min(maxY, y + halfSize)
|
|
55
|
+
];
|
|
56
|
+
}
|
|
57
|
+
function clamp(value, min, max) {
|
|
58
|
+
return Math.min(Math.max(value, min), max);
|
|
59
|
+
}
|
|
60
|
+
function assertFinitePixelBbox(pixelBbox, rawResult) {
|
|
61
|
+
if (4 !== pixelBbox.length || !pixelBbox.every((value)=>'number' == typeof value && Number.isFinite(value))) throw new Error(`invalid locate bbox data: ${JSON.stringify(rawResult)} `);
|
|
62
|
+
}
|
|
63
|
+
function assertPixelBboxOrder(pixelBbox, rawResult) {
|
|
64
|
+
const [left, top, right, bottom] = pixelBbox;
|
|
65
|
+
if (right >= left && bottom >= top) return;
|
|
66
|
+
throw new Error(`locate pixel bbox has invalid coordinate order: bbox=${JSON.stringify(rawResult)} pixelBbox=${JSON.stringify(pixelBbox)}`);
|
|
67
|
+
}
|
|
68
|
+
function assertPixelBboxInsideImage(pixelBbox, rawResult, width, height) {
|
|
69
|
+
const [left, top, right, bottom] = pixelBbox;
|
|
70
|
+
const maxRight = maxPixelIndex(width);
|
|
71
|
+
const maxBottom = maxPixelIndex(height);
|
|
72
|
+
const outOfImage = left < 0 || top < 0 || right > maxRight || bottom > maxBottom;
|
|
73
|
+
if (!outOfImage) return;
|
|
74
|
+
throw new Error(`locate pixel bbox is outside the image size: bbox=${JSON.stringify(rawResult)} imageSize=${width}x${height}`);
|
|
75
|
+
}
|
|
76
|
+
function finalizePixelBbox(pixelBbox, rawResult, { preparedSize, contentSize }) {
|
|
77
|
+
const { width, height } = preparedSize;
|
|
78
|
+
assertFinitePixelBbox(pixelBbox, rawResult);
|
|
79
|
+
assertPixelBboxOrder(pixelBbox, rawResult);
|
|
80
|
+
assertPixelBboxInsideImage(pixelBbox, rawResult, width, height);
|
|
81
|
+
const rightLimit = maxPixelIndex(contentSize?.width ?? width);
|
|
82
|
+
const bottomLimit = maxPixelIndex(contentSize?.height ?? height);
|
|
83
|
+
const [left, top, right, bottom] = pixelBbox;
|
|
84
|
+
return [
|
|
85
|
+
clamp(left, 0, rightLimit),
|
|
86
|
+
clamp(top, 0, bottomLimit),
|
|
87
|
+
clamp(right, 0, rightLimit),
|
|
88
|
+
clamp(bottom, 0, bottomLimit)
|
|
89
|
+
];
|
|
90
|
+
}
|
|
91
|
+
function finalizeSectionLocatePixelBboxGroup(result, rawResult, ctx) {
|
|
92
|
+
return {
|
|
93
|
+
target: finalizePixelBbox(result.target, rawResult, ctx),
|
|
94
|
+
...result.references ? {
|
|
95
|
+
references: result.references.map((reference)=>finalizePixelBbox(reference, rawResult, ctx))
|
|
96
|
+
} : {}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
exports.expandPointToBbox = __webpack_exports__.expandPointToBbox;
|
|
100
|
+
exports.finalizePixelBbox = __webpack_exports__.finalizePixelBbox;
|
|
101
|
+
exports.finalizeSectionLocatePixelBboxGroup = __webpack_exports__.finalizeSectionLocatePixelBboxGroup;
|
|
102
|
+
exports.mapNormalizedCoordinatesToPixelBbox = __webpack_exports__.mapNormalizedCoordinatesToPixelBbox;
|
|
103
|
+
exports.maxPixelIndex = __webpack_exports__.maxPixelIndex;
|
|
104
|
+
exports.normalizedCoordinateToPixelIndex = __webpack_exports__.normalizedCoordinateToPixelIndex;
|
|
105
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
106
|
+
"expandPointToBbox",
|
|
107
|
+
"finalizePixelBbox",
|
|
108
|
+
"finalizeSectionLocatePixelBboxGroup",
|
|
109
|
+
"mapNormalizedCoordinatesToPixelBbox",
|
|
110
|
+
"maxPixelIndex",
|
|
111
|
+
"normalizedCoordinateToPixelIndex"
|
|
112
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
113
|
+
Object.defineProperty(exports, '__esModule', {
|
|
114
|
+
value: true
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
//# sourceMappingURL=bbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-model/shared/model-locate-result/bbox.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../../src/ai-model/shared/model-locate-result/bbox.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 {\n LocateResultBbox,\n LocateResultContext,\n PixelBbox,\n SectionLocatePixelBboxGroup,\n} from './types';\n\nexport function maxPixelIndex(size: number) {\n return Math.max(size - 1, 0);\n}\n\nexport function normalizedCoordinateToPixelIndex(\n value: number,\n normalizedBy: number,\n size: number,\n) {\n return Math.round((value * maxPixelIndex(size)) / normalizedBy);\n}\n\nexport function mapNormalizedCoordinatesToPixelBbox(\n coordinates: LocateResultBbox,\n normalizedBy: number,\n width: number,\n height: number,\n): PixelBbox {\n // PixelBbox uses inclusive pixel indexes, so normalized coordinates map to\n // size - 1.\n const [left, top, right, bottom] = coordinates;\n return [\n normalizedCoordinateToPixelIndex(left, normalizedBy, width),\n normalizedCoordinateToPixelIndex(top, normalizedBy, height),\n normalizedCoordinateToPixelIndex(right, normalizedBy, width),\n normalizedCoordinateToPixelIndex(bottom, normalizedBy, height),\n ];\n}\n\nexport function expandPointToBbox(\n x: number,\n y: number,\n maxX: number,\n maxY: number,\n halfSize: number,\n): LocateResultBbox {\n return [\n Math.max(0, x - halfSize),\n Math.max(0, y - halfSize),\n Math.min(maxX, x + halfSize),\n Math.min(maxY, y + halfSize),\n ];\n}\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction assertFinitePixelBbox(\n pixelBbox: readonly number[],\n rawResult: unknown,\n): asserts pixelBbox is PixelBbox {\n if (\n pixelBbox.length !== 4 ||\n !pixelBbox.every(\n (value) => typeof value === 'number' && Number.isFinite(value),\n )\n ) {\n throw new Error(`invalid locate bbox data: ${JSON.stringify(rawResult)} `);\n }\n}\n\nfunction assertPixelBboxOrder(pixelBbox: PixelBbox, rawResult: unknown) {\n const [left, top, right, bottom] = pixelBbox;\n if (right >= left && bottom >= top) {\n return;\n }\n\n throw new Error(\n `locate pixel bbox has invalid coordinate order: bbox=${JSON.stringify(\n rawResult,\n )} pixelBbox=${JSON.stringify(pixelBbox)}`,\n );\n}\n\nfunction assertPixelBboxInsideImage(\n pixelBbox: PixelBbox,\n rawResult: unknown,\n width: number,\n height: number,\n) {\n const [left, top, right, bottom] = pixelBbox;\n const maxRight = maxPixelIndex(width);\n const maxBottom = maxPixelIndex(height);\n const outOfImage =\n left < 0 || top < 0 || right > maxRight || bottom > maxBottom;\n\n if (!outOfImage) {\n return;\n }\n\n throw new Error(\n `locate pixel bbox is outside the image size: bbox=${JSON.stringify(\n rawResult,\n )} imageSize=${width}x${height}`,\n );\n}\n\nexport function finalizePixelBbox(\n pixelBbox: PixelBbox,\n rawResult: unknown,\n { preparedSize, contentSize }: LocateResultContext,\n): PixelBbox {\n const { width, height } = preparedSize;\n assertFinitePixelBbox(pixelBbox, rawResult);\n assertPixelBboxOrder(pixelBbox, rawResult);\n assertPixelBboxInsideImage(pixelBbox, rawResult, width, height);\n\n const rightLimit = maxPixelIndex(contentSize?.width ?? width);\n const bottomLimit = maxPixelIndex(contentSize?.height ?? height);\n const [left, top, right, bottom] = pixelBbox;\n\n return [\n clamp(left, 0, rightLimit),\n clamp(top, 0, bottomLimit),\n clamp(right, 0, rightLimit),\n clamp(bottom, 0, bottomLimit),\n ];\n}\n\nexport function finalizeSectionLocatePixelBboxGroup(\n result: SectionLocatePixelBboxGroup,\n rawResult: unknown,\n ctx: LocateResultContext,\n): SectionLocatePixelBboxGroup {\n return {\n target: finalizePixelBbox(result.target, rawResult, ctx),\n ...(result.references\n ? {\n references: result.references.map((reference) =>\n finalizePixelBbox(reference, rawResult, ctx),\n ),\n }\n : {}),\n };\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","maxPixelIndex","size","Math","normalizedCoordinateToPixelIndex","value","normalizedBy","mapNormalizedCoordinatesToPixelBbox","coordinates","width","height","left","top","right","bottom","expandPointToBbox","x","y","maxX","maxY","halfSize","clamp","min","max","assertFinitePixelBbox","pixelBbox","rawResult","Number","Error","JSON","assertPixelBboxOrder","assertPixelBboxInsideImage","maxRight","maxBottom","outOfImage","finalizePixelBbox","preparedSize","contentSize","rightLimit","bottomLimit","finalizeSectionLocatePixelBboxGroup","result","ctx","reference"],"mappings":"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"}
|
|
@@ -0,0 +1,130 @@
|
|
|
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
|
+
createLocateResultAdapter: ()=>createLocateResultAdapter
|
|
28
|
+
});
|
|
29
|
+
const locate_result_coordinates_js_namespaceObject = require("../../prompts/locate-result-coordinates.js");
|
|
30
|
+
const external_bbox_js_namespaceObject = require("./bbox.js");
|
|
31
|
+
const external_parse_js_namespaceObject = require("./parse.js");
|
|
32
|
+
const external_pixel_bbox_mapper_js_namespaceObject = require("./pixel-bbox-mapper.js");
|
|
33
|
+
const rawLocateValueFields = {
|
|
34
|
+
primary: {
|
|
35
|
+
bbox: [
|
|
36
|
+
'bbox',
|
|
37
|
+
'bbox_2d'
|
|
38
|
+
],
|
|
39
|
+
point: [
|
|
40
|
+
'point'
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
references: {
|
|
44
|
+
bbox: [
|
|
45
|
+
'references_bbox',
|
|
46
|
+
'references_bbox_2d'
|
|
47
|
+
],
|
|
48
|
+
point: [
|
|
49
|
+
'references_point'
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
function resolveLocateResultCoordinates(coordinates) {
|
|
54
|
+
const order = coordinates.order ?? 'xy';
|
|
55
|
+
if (void 0 !== coordinates.normalizedBy && coordinates.normalizedBy <= 0) throw new Error(`locate result coordinates normalizedBy must be positive: ${coordinates.normalizedBy}`);
|
|
56
|
+
return {
|
|
57
|
+
shape: coordinates.shape,
|
|
58
|
+
order,
|
|
59
|
+
normalizedBy: coordinates.normalizedBy
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function extractFirstObjectField(input, fields) {
|
|
63
|
+
if (!input || 'object' != typeof input) return;
|
|
64
|
+
const record = input;
|
|
65
|
+
const matchedField = fields.find((field)=>void 0 !== record[field]);
|
|
66
|
+
return matchedField ? record[matchedField] : void 0;
|
|
67
|
+
}
|
|
68
|
+
function normalizeReferenceResults(input) {
|
|
69
|
+
if (null == input) return [];
|
|
70
|
+
return Array.isArray(input) ? input : [
|
|
71
|
+
input
|
|
72
|
+
];
|
|
73
|
+
}
|
|
74
|
+
function pickRawLocateValue(input, resolvedCoordinates, purpose) {
|
|
75
|
+
const fields = rawLocateValueFields[purpose][resolvedCoordinates.shape];
|
|
76
|
+
return extractFirstObjectField(input, fields);
|
|
77
|
+
}
|
|
78
|
+
function extractPrimaryRawLocateValue(input, resolvedCoordinates) {
|
|
79
|
+
const pickedRawResult = pickRawLocateValue(input, resolvedCoordinates, 'primary');
|
|
80
|
+
if (void 0 === pickedRawResult && null !== input && 'object' == typeof input && !Array.isArray(input)) throw new Error('locate response does not contain a recognizable locate result field');
|
|
81
|
+
return void 0 === pickedRawResult ? input : pickedRawResult;
|
|
82
|
+
}
|
|
83
|
+
function extractReferenceRawLocateValues(input, resolvedCoordinates) {
|
|
84
|
+
return normalizeReferenceResults(pickRawLocateValue(input, resolvedCoordinates, 'references'));
|
|
85
|
+
}
|
|
86
|
+
function createStandardLocateResultAdapterImplementation(config) {
|
|
87
|
+
const resolvedCoordinates = resolveLocateResultCoordinates(config.coordinates);
|
|
88
|
+
const parseRawLocateValue = config.parseRawLocateValue ?? ((input)=>(0, external_parse_js_namespaceObject.parseNumericLocateResult)(resolvedCoordinates, input));
|
|
89
|
+
const mapLocateResultToPixelBbox = config.mapLocateResultToPixelBbox ?? ((result, ctx)=>(0, external_pixel_bbox_mapper_js_namespaceObject.mapLocateResultToPixelBboxByCoordinates)(result, ctx, resolvedCoordinates));
|
|
90
|
+
const mapRawLocateValueToPixelBbox = (rawResult, ctx)=>mapLocateResultToPixelBbox(parseRawLocateValue(rawResult), ctx);
|
|
91
|
+
const adaptRawLocateInputToPixelBbox = (input, ctx)=>mapRawLocateValueToPixelBbox(extractPrimaryRawLocateValue(input, resolvedCoordinates), ctx);
|
|
92
|
+
const adaptElementLocateResultToPixelBbox = (input, ctx)=>adaptRawLocateInputToPixelBbox(input, ctx);
|
|
93
|
+
const adaptPlanningParamToPixelBbox = (input, ctx)=>adaptRawLocateInputToPixelBbox(input, ctx);
|
|
94
|
+
const adaptSectionLocateResultToPixelBboxGroup = (input, ctx)=>{
|
|
95
|
+
const target = adaptRawLocateInputToPixelBbox(input, ctx);
|
|
96
|
+
const references = extractReferenceRawLocateValues(input, resolvedCoordinates).map((raw)=>mapRawLocateValueToPixelBbox(raw, ctx));
|
|
97
|
+
return {
|
|
98
|
+
target,
|
|
99
|
+
...references.length > 0 ? {
|
|
100
|
+
references
|
|
101
|
+
} : {}
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
return {
|
|
105
|
+
kind: 'standard',
|
|
106
|
+
promptSpec: (0, locate_result_coordinates_js_namespaceObject.createLocateResultPromptSpec)(resolvedCoordinates),
|
|
107
|
+
adaptElementLocateResultToPixelBbox,
|
|
108
|
+
adaptSectionLocateResultToPixelBboxGroup,
|
|
109
|
+
adaptPlanningParamToPixelBbox
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
function createLocateResultAdapter(config) {
|
|
113
|
+
const adapter = 'custom' === config.kind ? config : createStandardLocateResultAdapterImplementation(config);
|
|
114
|
+
return {
|
|
115
|
+
kind: adapter.kind,
|
|
116
|
+
promptSpec: adapter.promptSpec,
|
|
117
|
+
adaptElementLocateResultToPixelBbox: (input, ctx)=>(0, external_bbox_js_namespaceObject.finalizePixelBbox)(adapter.adaptElementLocateResultToPixelBbox(input, ctx), input, ctx),
|
|
118
|
+
adaptSectionLocateResultToPixelBboxGroup: (input, ctx)=>(0, external_bbox_js_namespaceObject.finalizeSectionLocatePixelBboxGroup)(adapter.adaptSectionLocateResultToPixelBboxGroup(input, ctx), input, ctx),
|
|
119
|
+
adaptPlanningParamToPixelBbox: (input, ctx)=>(0, external_bbox_js_namespaceObject.finalizePixelBbox)(adapter.adaptPlanningParamToPixelBbox(input, ctx), input, ctx)
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
exports.createLocateResultAdapter = __webpack_exports__.createLocateResultAdapter;
|
|
123
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
124
|
+
"createLocateResultAdapter"
|
|
125
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
126
|
+
Object.defineProperty(exports, '__esModule', {
|
|
127
|
+
value: true
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +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 { createLocateResultPromptSpec } from '../../prompts/locate-result-coordinates';\nimport { finalizePixelBbox, finalizeSectionLocatePixelBboxGroup } from './bbox';\nimport { parseNumericLocateResult } from './parse';\nimport { mapLocateResultToPixelBboxByCoordinates } from './pixel-bbox-mapper';\nimport type {\n LocateResultAdapter,\n LocateResultAdapterDefinition,\n LocateResultContext,\n LocateResultCoordinates,\n PixelBbox,\n ResolvedLocateResultCoordinates,\n SectionLocatePixelBboxGroup,\n StandardLocateResultAdapterDefinition,\n} from './types';\n\ntype RawLocateValuePurpose = 'primary' | 'references';\n\nconst rawLocateValueFields = {\n primary: {\n bbox: ['bbox', 'bbox_2d'],\n point: ['point'],\n },\n references: {\n bbox: ['references_bbox', 'references_bbox_2d'],\n point: ['references_point'],\n },\n} as const;\n\nfunction resolveLocateResultCoordinates(\n coordinates: LocateResultCoordinates,\n): ResolvedLocateResultCoordinates {\n const order = coordinates.order ?? 'xy';\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,\n normalizedBy: coordinates.normalizedBy,\n };\n}\n\nfunction extractFirstObjectField(\n input: unknown,\n fields: readonly string[],\n): unknown | undefined {\n if (!input || typeof input !== 'object') {\n return undefined;\n }\n\n const record = input as Record<string, unknown>;\n const matchedField = fields.find((field) => record[field] !== undefined);\n return matchedField ? record[matchedField] : undefined;\n}\n\nfunction normalizeReferenceResults(input: unknown): unknown[] {\n if (input === undefined || input === null) {\n return [];\n }\n return Array.isArray(input) ? input : [input];\n}\n\nfunction pickRawLocateValue(\n input: unknown,\n resolvedCoordinates: ResolvedLocateResultCoordinates,\n purpose: RawLocateValuePurpose,\n): unknown | undefined {\n const fields = rawLocateValueFields[purpose][resolvedCoordinates.shape];\n return extractFirstObjectField(input, fields);\n}\n\nfunction extractPrimaryRawLocateValue(\n input: unknown,\n resolvedCoordinates: ResolvedLocateResultCoordinates,\n): unknown {\n const pickedRawResult = pickRawLocateValue(\n input,\n resolvedCoordinates,\n 'primary',\n );\n if (\n pickedRawResult === undefined &&\n input !== null &&\n typeof input === 'object' &&\n !Array.isArray(input)\n ) {\n throw new Error(\n 'locate response does not contain a recognizable locate result field',\n );\n }\n\n return pickedRawResult === undefined ? input : pickedRawResult;\n}\n\nfunction extractReferenceRawLocateValues(\n input: unknown,\n resolvedCoordinates: ResolvedLocateResultCoordinates,\n): unknown[] {\n return normalizeReferenceResults(\n pickRawLocateValue(input, resolvedCoordinates, 'references'),\n );\n}\n\nfunction createStandardLocateResultAdapterImplementation(\n config: StandardLocateResultAdapterDefinition,\n): LocateResultAdapter {\n const resolvedCoordinates = resolveLocateResultCoordinates(\n config.coordinates,\n );\n const parseRawLocateValue =\n config.parseRawLocateValue ??\n ((input) => parseNumericLocateResult(resolvedCoordinates, input));\n const mapLocateResultToPixelBbox =\n config.mapLocateResultToPixelBbox ??\n ((result, ctx) =>\n mapLocateResultToPixelBboxByCoordinates(\n result,\n ctx,\n resolvedCoordinates,\n ));\n\n const mapRawLocateValueToPixelBbox = (\n rawResult: unknown,\n ctx: LocateResultContext,\n ) => mapLocateResultToPixelBbox(parseRawLocateValue(rawResult), ctx);\n // Keep error semantics out of the adapter: callers may preserve, ignore, or\n // fail fast on `error` / `errors`, while this layer only extracts coordinates.\n const adaptRawLocateInputToPixelBbox = (\n input: unknown,\n ctx: LocateResultContext,\n ): PixelBbox =>\n mapRawLocateValueToPixelBbox(\n extractPrimaryRawLocateValue(input, resolvedCoordinates),\n ctx,\n );\n const adaptElementLocateResultToPixelBbox = (\n input: unknown,\n ctx: LocateResultContext,\n ): PixelBbox => adaptRawLocateInputToPixelBbox(input, ctx);\n const adaptPlanningParamToPixelBbox = (\n input: unknown,\n ctx: LocateResultContext,\n ): PixelBbox => adaptRawLocateInputToPixelBbox(input, ctx);\n const adaptSectionLocateResultToPixelBboxGroup = (\n input: unknown,\n ctx: LocateResultContext,\n ): SectionLocatePixelBboxGroup => {\n const target = adaptRawLocateInputToPixelBbox(input, ctx);\n const references = extractReferenceRawLocateValues(\n input,\n resolvedCoordinates,\n ).map((raw) => mapRawLocateValueToPixelBbox(raw, ctx));\n return {\n target,\n ...(references.length > 0 ? { references } : {}),\n };\n };\n return {\n kind: 'standard',\n promptSpec: createLocateResultPromptSpec(resolvedCoordinates),\n adaptElementLocateResultToPixelBbox,\n adaptSectionLocateResultToPixelBboxGroup,\n adaptPlanningParamToPixelBbox,\n };\n}\n\nexport function createLocateResultAdapter(\n config: LocateResultAdapterDefinition,\n): LocateResultAdapter {\n const adapter: LocateResultAdapter =\n config.kind === 'custom'\n ? config\n : createStandardLocateResultAdapterImplementation(config);\n\n return {\n kind: adapter.kind,\n promptSpec: adapter.promptSpec,\n adaptElementLocateResultToPixelBbox: (input, ctx) =>\n finalizePixelBbox(\n adapter.adaptElementLocateResultToPixelBbox(input, ctx),\n input,\n ctx,\n ),\n adaptSectionLocateResultToPixelBboxGroup: (input, ctx) =>\n finalizeSectionLocatePixelBboxGroup(\n adapter.adaptSectionLocateResultToPixelBboxGroup(input, ctx),\n input,\n ctx,\n ),\n adaptPlanningParamToPixelBbox: (input, ctx) =>\n finalizePixelBbox(\n adapter.adaptPlanningParamToPixelBbox(input, ctx),\n input,\n ctx,\n ),\n };\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","rawLocateValueFields","resolveLocateResultCoordinates","coordinates","order","undefined","Error","extractFirstObjectField","input","fields","record","matchedField","field","normalizeReferenceResults","Array","pickRawLocateValue","resolvedCoordinates","purpose","extractPrimaryRawLocateValue","pickedRawResult","extractReferenceRawLocateValues","createStandardLocateResultAdapterImplementation","config","parseRawLocateValue","parseNumericLocateResult","mapLocateResultToPixelBbox","result","ctx","mapLocateResultToPixelBboxByCoordinates","mapRawLocateValueToPixelBbox","rawResult","adaptRawLocateInputToPixelBbox","adaptElementLocateResultToPixelBbox","adaptPlanningParamToPixelBbox","adaptSectionLocateResultToPixelBboxGroup","target","references","raw","createLocateResultPromptSpec","createLocateResultAdapter","adapter","finalizePixelBbox","finalizeSectionLocatePixelBboxGroup"],"mappings":"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"}
|
|
@@ -24,19 +24,19 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
|
|
27
|
+
createLocateResultAdapter: ()=>external_factory_js_namespaceObject.createLocateResultAdapter,
|
|
28
|
+
unwrapCoordinateListLikeInput: ()=>external_parse_js_namespaceObject.unwrapCoordinateListLikeInput
|
|
28
29
|
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
exports.bboxDescription = __webpack_exports__.bboxDescription;
|
|
30
|
+
const external_factory_js_namespaceObject = require("./factory.js");
|
|
31
|
+
const external_parse_js_namespaceObject = require("./parse.js");
|
|
32
|
+
exports.createLocateResultAdapter = __webpack_exports__.createLocateResultAdapter;
|
|
33
|
+
exports.unwrapCoordinateListLikeInput = __webpack_exports__.unwrapCoordinateListLikeInput;
|
|
35
34
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
36
|
-
"
|
|
35
|
+
"createLocateResultAdapter",
|
|
36
|
+
"unwrapCoordinateListLikeInput"
|
|
37
37
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
38
38
|
Object.defineProperty(exports, '__esModule', {
|
|
39
39
|
value: true
|
|
40
40
|
});
|
|
41
41
|
|
|
42
|
-
//# sourceMappingURL=
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-model/shared/model-locate-result/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
|
+
parseNumericLocateResult: ()=>parseNumericLocateResult,
|
|
28
|
+
unwrapCoordinateListLikeInput: ()=>unwrapCoordinateListLikeInput
|
|
29
|
+
});
|
|
30
|
+
function unwrapCoordinateListLikeInput(coordinateList) {
|
|
31
|
+
if (Array.isArray(coordinateList)) {
|
|
32
|
+
if (Array.isArray(coordinateList[0])) return coordinateList[0];
|
|
33
|
+
}
|
|
34
|
+
return coordinateList;
|
|
35
|
+
}
|
|
36
|
+
function parseCoordinateList(input, label) {
|
|
37
|
+
const unwrapped = unwrapCoordinateListLikeInput(input);
|
|
38
|
+
const values = 'string' == typeof unwrapped ? unwrapped.trim().split(/[\s,]+/).filter(Boolean) : unwrapped;
|
|
39
|
+
if (!Array.isArray(values)) throw new Error(`invalid ${label} data: ${JSON.stringify(input)} `);
|
|
40
|
+
const numericValues = values.map((value)=>'number' == typeof value ? value : Number(value));
|
|
41
|
+
if (!numericValues.every((value)=>Number.isFinite(value))) throw new Error(`invalid ${label} data: ${JSON.stringify(input)} `);
|
|
42
|
+
return numericValues;
|
|
43
|
+
}
|
|
44
|
+
function parseNumericLocateResult(resolvedCoordinates, input) {
|
|
45
|
+
if ('point' === resolvedCoordinates.shape) {
|
|
46
|
+
const point = parseCoordinateList(input, 'point');
|
|
47
|
+
if (point.length < 2) throw new Error(`invalid point data: ${JSON.stringify(input)} `);
|
|
48
|
+
return {
|
|
49
|
+
type: 'point',
|
|
50
|
+
coordinates: [
|
|
51
|
+
point[0],
|
|
52
|
+
point[1]
|
|
53
|
+
]
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const bbox = parseCoordinateList(input, 'bbox');
|
|
57
|
+
if (4 !== bbox.length) throw new Error(`invalid bbox data: ${JSON.stringify(input)} `);
|
|
58
|
+
return {
|
|
59
|
+
type: 'bbox',
|
|
60
|
+
coordinates: [
|
|
61
|
+
bbox[0],
|
|
62
|
+
bbox[1],
|
|
63
|
+
bbox[2],
|
|
64
|
+
bbox[3]
|
|
65
|
+
]
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
exports.parseNumericLocateResult = __webpack_exports__.parseNumericLocateResult;
|
|
69
|
+
exports.unwrapCoordinateListLikeInput = __webpack_exports__.unwrapCoordinateListLikeInput;
|
|
70
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
71
|
+
"parseNumericLocateResult",
|
|
72
|
+
"unwrapCoordinateListLikeInput"
|
|
73
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
74
|
+
Object.defineProperty(exports, '__esModule', {
|
|
75
|
+
value: true
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
//# sourceMappingURL=parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-model/shared/model-locate-result/parse.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../../src/ai-model/shared/model-locate-result/parse.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 {\n LocateResultValue,\n ResolvedLocateResultCoordinates,\n} from './types';\n\ntype CoordinateListLikeInput =\n | number[]\n | string[]\n | string\n | (number[] | string[])[];\n\nexport function unwrapCoordinateListLikeInput(\n coordinateList: CoordinateListLikeInput,\n): number[] | string[] | string {\n if (Array.isArray(coordinateList)) {\n if (Array.isArray(coordinateList[0])) {\n return coordinateList[0] as number[] | string[];\n }\n return coordinateList as number[] | string[];\n }\n return coordinateList as string;\n}\n\nfunction parseCoordinateList(input: unknown, label: string): number[] {\n const unwrapped = unwrapCoordinateListLikeInput(\n input as CoordinateListLikeInput,\n );\n const values =\n typeof unwrapped === 'string'\n ? unwrapped\n .trim()\n .split(/[\\s,]+/)\n .filter(Boolean)\n : unwrapped;\n\n if (!Array.isArray(values)) {\n throw new Error(`invalid ${label} data: ${JSON.stringify(input)} `);\n }\n\n const numericValues = values.map((value) =>\n typeof value === 'number' ? value : Number(value),\n );\n\n if (!numericValues.every((value) => Number.isFinite(value))) {\n throw new Error(`invalid ${label} data: ${JSON.stringify(input)} `);\n }\n\n return numericValues;\n}\n\nexport function parseNumericLocateResult(\n resolvedCoordinates: ResolvedLocateResultCoordinates,\n input: unknown,\n): LocateResultValue {\n if (resolvedCoordinates.shape === 'point') {\n const point = parseCoordinateList(input, 'point');\n if (point.length < 2) {\n throw new Error(`invalid point data: ${JSON.stringify(input)} `);\n }\n return { type: 'point', coordinates: [point[0], point[1]] };\n }\n\n const bbox = parseCoordinateList(input, 'bbox');\n if (bbox.length !== 4) {\n throw new Error(`invalid bbox data: ${JSON.stringify(input)} `);\n }\n\n return {\n type: 'bbox',\n coordinates: [bbox[0], bbox[1], bbox[2], bbox[3]],\n };\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","unwrapCoordinateListLikeInput","coordinateList","Array","parseCoordinateList","input","label","unwrapped","values","Boolean","Error","JSON","numericValues","value","Number","parseNumericLocateResult","resolvedCoordinates","point","bbox"],"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,SAASI,8BACdC,cAAuC;IAEvC,IAAIC,MAAM,OAAO,CAACD,iBAChB;QAAA,IAAIC,MAAM,OAAO,CAACD,cAAc,CAAC,EAAE,GACjC,OAAOA,cAAc,CAAC,EAAE;IAC1B;IAGF,OAAOA;AACT;AAEA,SAASE,oBAAoBC,KAAc,EAAEC,KAAa;IACxD,MAAMC,YAAYN,8BAChBI;IAEF,MAAMG,SACJ,AAAqB,YAArB,OAAOD,YACHA,UACG,IAAI,GACJ,KAAK,CAAC,UACN,MAAM,CAACE,WACVF;IAEN,IAAI,CAACJ,MAAM,OAAO,CAACK,SACjB,MAAM,IAAIE,MAAM,CAAC,QAAQ,EAAEJ,MAAM,OAAO,EAAEK,KAAK,SAAS,CAACN,OAAO,CAAC,CAAC;IAGpE,MAAMO,gBAAgBJ,OAAO,GAAG,CAAC,CAACK,QAChC,AAAiB,YAAjB,OAAOA,QAAqBA,QAAQC,OAAOD;IAG7C,IAAI,CAACD,cAAc,KAAK,CAAC,CAACC,QAAUC,OAAO,QAAQ,CAACD,SAClD,MAAM,IAAIH,MAAM,CAAC,QAAQ,EAAEJ,MAAM,OAAO,EAAEK,KAAK,SAAS,CAACN,OAAO,CAAC,CAAC;IAGpE,OAAOO;AACT;AAEO,SAASG,yBACdC,mBAAoD,EACpDX,KAAc;IAEd,IAAIW,AAA8B,YAA9BA,oBAAoB,KAAK,EAAc;QACzC,MAAMC,QAAQb,oBAAoBC,OAAO;QACzC,IAAIY,MAAM,MAAM,GAAG,GACjB,MAAM,IAAIP,MAAM,CAAC,oBAAoB,EAAEC,KAAK,SAAS,CAACN,OAAO,CAAC,CAAC;QAEjE,OAAO;YAAE,MAAM;YAAS,aAAa;gBAACY,KAAK,CAAC,EAAE;gBAAEA,KAAK,CAAC,EAAE;aAAC;QAAC;IAC5D;IAEA,MAAMC,OAAOd,oBAAoBC,OAAO;IACxC,IAAIa,AAAgB,MAAhBA,KAAK,MAAM,EACb,MAAM,IAAIR,MAAM,CAAC,mBAAmB,EAAEC,KAAK,SAAS,CAACN,OAAO,CAAC,CAAC;IAGhE,OAAO;QACL,MAAM;QACN,aAAa;YAACa,IAAI,CAAC,EAAE;YAAEA,IAAI,CAAC,EAAE;YAAEA,IAAI,CAAC,EAAE;YAAEA,IAAI,CAAC,EAAE;SAAC;IACnD;AACF"}
|
|
@@ -0,0 +1,98 @@
|
|
|
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
|
+
mapLocateResultToPixelBboxByCoordinates: ()=>mapLocateResultToPixelBboxByCoordinates
|
|
28
|
+
});
|
|
29
|
+
const external_bbox_js_namespaceObject = require("./bbox.js");
|
|
30
|
+
const defaultBboxSize = 20;
|
|
31
|
+
function resolveCoordinateLimits(result, resolvedCoordinates, width, height) {
|
|
32
|
+
const normalizedBy = resolvedCoordinates.normalizedBy;
|
|
33
|
+
if (void 0 !== normalizedBy) return result.coordinates.map(()=>normalizedBy);
|
|
34
|
+
if ('bbox' === result.type) return 'yx' === resolvedCoordinates.order ? [
|
|
35
|
+
height,
|
|
36
|
+
width,
|
|
37
|
+
height,
|
|
38
|
+
width
|
|
39
|
+
] : [
|
|
40
|
+
width,
|
|
41
|
+
height,
|
|
42
|
+
width,
|
|
43
|
+
height
|
|
44
|
+
];
|
|
45
|
+
return 'yx' === resolvedCoordinates.order ? [
|
|
46
|
+
height,
|
|
47
|
+
width
|
|
48
|
+
] : [
|
|
49
|
+
width,
|
|
50
|
+
height
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
function assertLocateResultCoordinates(result, resolvedCoordinates, width, height) {
|
|
54
|
+
const normalizedBy = resolvedCoordinates.normalizedBy;
|
|
55
|
+
const limits = resolveCoordinateLimits(result, resolvedCoordinates, width, height);
|
|
56
|
+
const outOfRange = result.coordinates.some((value, index)=>{
|
|
57
|
+
const limit = limits[index];
|
|
58
|
+
return 'number' != typeof value || !Number.isFinite(value) || value < 0 || value > limit;
|
|
59
|
+
});
|
|
60
|
+
if (!outOfRange) return;
|
|
61
|
+
const source = void 0 !== normalizedBy ? `normalized range [0, ${normalizedBy}]` : `image size [0, ${width}]x[0, ${height}]`;
|
|
62
|
+
const normalizedInfo = void 0 !== normalizedBy ? ` normalizedBy=${normalizedBy}` : '';
|
|
63
|
+
throw new Error(`locate result coordinates ${JSON.stringify(result.coordinates)} exceed ${source}. shape=${resolvedCoordinates.shape} order=${resolvedCoordinates.order}${normalizedInfo} limits=${JSON.stringify(limits)}`);
|
|
64
|
+
}
|
|
65
|
+
function reorderCoordinatesToXy(coordinates, order) {
|
|
66
|
+
if ('yx' !== order) return coordinates;
|
|
67
|
+
if (4 === coordinates.length) {
|
|
68
|
+
const [top, left, bottom, right] = coordinates;
|
|
69
|
+
return [
|
|
70
|
+
left,
|
|
71
|
+
top,
|
|
72
|
+
right,
|
|
73
|
+
bottom
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
const [y, x] = coordinates;
|
|
77
|
+
return [
|
|
78
|
+
x,
|
|
79
|
+
y
|
|
80
|
+
];
|
|
81
|
+
}
|
|
82
|
+
function mapLocateResultToPixelBboxByCoordinates(result, { preparedSize }, resolvedCoordinates) {
|
|
83
|
+
const { width, height } = preparedSize;
|
|
84
|
+
const normalizedBy = resolvedCoordinates.normalizedBy;
|
|
85
|
+
assertLocateResultCoordinates(result, resolvedCoordinates, width, height);
|
|
86
|
+
const xyCoordinates = reorderCoordinatesToXy(result.coordinates, resolvedCoordinates.order);
|
|
87
|
+
const xyBbox = 4 === xyCoordinates.length ? xyCoordinates : (0, external_bbox_js_namespaceObject.expandPointToBbox)(xyCoordinates[0], xyCoordinates[1], normalizedBy ?? (0, external_bbox_js_namespaceObject.maxPixelIndex)(width), normalizedBy ?? (0, external_bbox_js_namespaceObject.maxPixelIndex)(height), void 0 === normalizedBy ? defaultBboxSize / 2 : normalizedBy / 100);
|
|
88
|
+
return void 0 === normalizedBy ? xyBbox : (0, external_bbox_js_namespaceObject.mapNormalizedCoordinatesToPixelBbox)(xyBbox, normalizedBy, width, height);
|
|
89
|
+
}
|
|
90
|
+
exports.mapLocateResultToPixelBboxByCoordinates = __webpack_exports__.mapLocateResultToPixelBboxByCoordinates;
|
|
91
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
92
|
+
"mapLocateResultToPixelBboxByCoordinates"
|
|
93
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
94
|
+
Object.defineProperty(exports, '__esModule', {
|
|
95
|
+
value: true
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
//# sourceMappingURL=pixel-bbox-mapper.js.map
|