@aiscene/core 9.0.6 → 9.0.8
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 +24 -11
- package/dist/es/agent/agent.mjs.map +1 -1
- package/dist/es/agent/cache-config.mjs +19 -0
- package/dist/es/agent/cache-config.mjs.map +1 -0
- package/dist/es/agent/file-chooser.mjs +82 -0
- package/dist/es/agent/file-chooser.mjs.map +1 -0
- package/dist/es/agent/insight.mjs +101 -0
- package/dist/es/agent/insight.mjs.map +1 -0
- package/dist/es/agent/metrics.mjs +81 -0
- package/dist/es/agent/metrics.mjs.map +1 -0
- package/dist/es/agent/progress/ai-act-progress.mjs +199 -0
- package/dist/es/agent/progress/ai-act-progress.mjs.map +1 -0
- package/dist/es/agent/progress/index.mjs +2 -0
- package/dist/es/agent/progress/progress-bus.mjs +52 -0
- package/dist/es/agent/progress/progress-bus.mjs.map +1 -0
- package/dist/es/agent/prompt-context.mjs +25 -0
- package/dist/es/agent/prompt-context.mjs.map +1 -0
- package/dist/es/agent/record-to-report.mjs +14 -0
- package/dist/es/agent/record-to-report.mjs.map +1 -0
- package/dist/es/agent/run-gherkin-scenario.mjs +114 -0
- package/dist/es/agent/run-gherkin-scenario.mjs.map +1 -0
- package/dist/es/agent/run-markdown.mjs +62 -0
- package/dist/es/agent/run-markdown.mjs.map +1 -0
- package/dist/es/agent/screenshot-preparation.mjs +37 -0
- package/dist/es/agent/screenshot-preparation.mjs.map +1 -0
- package/dist/es/agent/ui-observer.mjs +385 -0
- package/dist/es/agent/ui-observer.mjs.map +1 -0
- package/dist/es/agent/utils.mjs +42 -4
- package/dist/es/agent/utils.mjs.map +1 -1
- package/dist/es/ai-model/connectivity/fixture.mjs +8 -0
- package/dist/es/ai-model/connectivity/fixture.mjs.map +1 -0
- package/dist/es/ai-model/connectivity/index.mjs +2 -0
- package/dist/es/ai-model/connectivity/run-connectivity-test.mjs +160 -0
- package/dist/es/ai-model/connectivity/run-connectivity-test.mjs.map +1 -0
- package/dist/es/ai-model/conversation-history.mjs.map +1 -1
- package/dist/es/ai-model/index.mjs +2 -1
- package/dist/es/ai-model/inspect.mjs +1 -1
- package/dist/es/ai-model/inspect.mjs.map +1 -1
- package/dist/es/ai-model/model-adapter/chat-completion.mjs +69 -0
- package/dist/es/ai-model/model-adapter/chat-completion.mjs.map +1 -0
- package/dist/es/ai-model/model-adapter/custom-planning-action.mjs +6 -0
- package/dist/es/ai-model/model-adapter/custom-planning-action.mjs.map +1 -0
- package/dist/es/ai-model/model-adapter/custom-planning-types.mjs +0 -0
- package/dist/es/ai-model/model-adapter/default-insight-protocol.mjs +28 -0
- package/dist/es/ai-model/model-adapter/default-insight-protocol.mjs.map +1 -0
- package/dist/es/ai-model/model-adapter/default-locate-protocol.mjs +145 -0
- package/dist/es/ai-model/model-adapter/default-locate-protocol.mjs.map +1 -0
- package/dist/es/ai-model/model-adapter/default-planning-protocol.mjs +124 -0
- package/dist/es/ai-model/model-adapter/default-planning-protocol.mjs.map +1 -0
- package/dist/es/ai-model/model-adapter/image-preprocess.mjs +27 -0
- package/dist/es/ai-model/model-adapter/image-preprocess.mjs.map +1 -0
- package/dist/es/ai-model/model-adapter/index.mjs +2 -0
- package/dist/es/ai-model/model-adapter/insight-protocol.mjs +0 -0
- package/dist/es/ai-model/model-adapter/insight.mjs +13 -0
- package/dist/es/ai-model/model-adapter/insight.mjs.map +1 -0
- package/dist/es/ai-model/model-adapter/locate-protocol.mjs +0 -0
- package/dist/es/ai-model/model-adapter/locate.mjs +53 -0
- package/dist/es/ai-model/model-adapter/locate.mjs.map +1 -0
- package/dist/es/ai-model/model-adapter/planning-protocol.mjs +0 -0
- package/dist/es/ai-model/model-adapter/planning.mjs +49 -0
- package/dist/es/ai-model/model-adapter/planning.mjs.map +1 -0
- package/dist/es/ai-model/model-adapter/resolve.mjs +54 -0
- package/dist/es/ai-model/model-adapter/resolve.mjs.map +1 -0
- package/dist/es/ai-model/model-adapter/types.mjs +0 -0
- package/dist/es/ai-model/models/auto-glm/actions.mjs +205 -0
- 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 +11 -0
- package/dist/es/ai-model/models/auto-glm/locate.mjs.map +1 -0
- package/dist/es/ai-model/models/auto-glm/parser.mjs +217 -0
- package/dist/es/ai-model/models/auto-glm/parser.mjs.map +1 -0
- package/dist/es/ai-model/models/auto-glm/planning.mjs +33 -0
- package/dist/es/ai-model/models/auto-glm/planning.mjs.map +1 -0
- package/dist/es/ai-model/models/auto-glm/prompt.mjs +214 -0
- package/dist/es/ai-model/models/auto-glm/prompt.mjs.map +1 -0
- package/dist/es/ai-model/models/deepseek/adapter.mjs +79 -0
- package/dist/es/ai-model/models/deepseek/adapter.mjs.map +1 -0
- package/dist/es/ai-model/models/deepseek/locate-protocol.mjs +89 -0
- package/dist/es/ai-model/models/deepseek/locate-protocol.mjs.map +1 -0
- package/dist/es/ai-model/models/default.mjs +13 -0
- package/dist/es/ai-model/models/default.mjs.map +1 -0
- package/dist/es/ai-model/models/doubao.mjs +95 -0
- package/dist/es/ai-model/models/doubao.mjs.map +1 -0
- package/dist/es/ai-model/models/gemini.mjs +100 -0
- package/dist/es/ai-model/models/gemini.mjs.map +1 -0
- package/dist/es/ai-model/models/glm.mjs +46 -0
- package/dist/es/ai-model/models/glm.mjs.map +1 -0
- package/dist/es/ai-model/models/gpt.mjs +43 -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/kimi.mjs +102 -0
- package/dist/es/ai-model/models/kimi.mjs.map +1 -0
- package/dist/es/ai-model/models/mimo.mjs +36 -0
- package/dist/es/ai-model/models/mimo.mjs.map +1 -0
- package/dist/es/ai-model/models/qwen.mjs +139 -0
- package/dist/es/ai-model/models/qwen.mjs.map +1 -0
- package/dist/es/ai-model/models/registry.mjs +51 -0
- package/dist/es/ai-model/models/registry.mjs.map +1 -0
- package/dist/es/ai-model/models/ui-tars/actions.mjs +147 -0
- package/dist/es/ai-model/models/ui-tars/actions.mjs.map +1 -0
- package/dist/es/ai-model/models/ui-tars/adapter.mjs +102 -0
- package/dist/es/ai-model/models/ui-tars/adapter.mjs.map +1 -0
- package/dist/es/ai-model/models/ui-tars/parser.mjs +40 -0
- package/dist/es/ai-model/models/ui-tars/parser.mjs.map +1 -0
- package/dist/es/ai-model/models/ui-tars/planning.mjs +25 -0
- package/dist/es/ai-model/models/ui-tars/planning.mjs.map +1 -0
- package/dist/es/ai-model/models/ui-tars/prompt.mjs +36 -0
- package/dist/es/ai-model/models/ui-tars/prompt.mjs.map +1 -0
- package/dist/es/ai-model/models/utils/intent.mjs +6 -0
- package/dist/es/ai-model/models/utils/intent.mjs.map +1 -0
- package/dist/es/ai-model/prompt/insight/index.mjs +3 -0
- package/dist/es/ai-model/prompt/insight/system-prompt.mjs +104 -0
- package/dist/es/ai-model/prompt/insight/system-prompt.mjs.map +1 -0
- package/dist/es/ai-model/prompt/insight/user-prompt.mjs +23 -0
- package/dist/es/ai-model/prompt/insight/user-prompt.mjs.map +1 -0
- package/dist/es/ai-model/prompt/locate/element-system-prompt.mjs +12 -0
- package/dist/es/ai-model/prompt/locate/element-system-prompt.mjs.map +1 -0
- package/dist/es/ai-model/prompt/locate/grounding-rules.mjs +13 -0
- package/dist/es/ai-model/prompt/locate/grounding-rules.mjs.map +1 -0
- package/dist/es/ai-model/prompt/locate/index.mjs +4 -0
- package/dist/es/ai-model/prompt/locate/search-area-system-prompt.mjs +9 -0
- package/dist/es/ai-model/prompt/locate/search-area-system-prompt.mjs.map +1 -0
- package/dist/es/ai-model/prompt/planning/action-output-example.mjs +52 -0
- package/dist/es/ai-model/prompt/planning/action-output-example.mjs.map +1 -0
- package/dist/es/ai-model/prompt/planning/action-space-description.mjs +28 -0
- package/dist/es/ai-model/prompt/planning/action-space-description.mjs.map +1 -0
- package/dist/es/ai-model/prompt/planning/index.mjs +6 -0
- package/dist/es/ai-model/prompt/planning/multi-turn-example.mjs +221 -0
- package/dist/es/ai-model/prompt/planning/multi-turn-example.mjs.map +1 -0
- package/dist/es/ai-model/prompt/planning/planning-response-example.mjs +25 -0
- package/dist/es/ai-model/prompt/planning/planning-response-example.mjs.map +1 -0
- package/dist/es/ai-model/prompt/planning/sub-goals-text.mjs +17 -0
- package/dist/es/ai-model/prompt/planning/sub-goals-text.mjs.map +1 -0
- package/dist/es/ai-model/prompt/planning/system-prompt.mjs +293 -0
- package/dist/es/ai-model/prompt/planning/system-prompt.mjs.map +1 -0
- package/dist/es/ai-model/service-caller/codex-app-server.mjs +1 -0
- package/dist/es/ai-model/service-caller/codex-app-server.mjs.map +1 -1
- package/dist/es/ai-model/service-caller/index.mjs +35 -16
- package/dist/es/ai-model/service-caller/index.mjs.map +1 -1
- package/dist/es/ai-model/service-caller/model-call-recorder.mjs +74 -0
- package/dist/es/ai-model/service-caller/model-call-recorder.mjs.map +1 -0
- package/dist/es/ai-model/service-caller/openai-error.mjs +147 -0
- package/dist/es/ai-model/service-caller/openai-error.mjs.map +1 -0
- package/dist/es/ai-model/service-caller/proxy-deps.node.mjs +9 -0
- package/dist/es/ai-model/service-caller/proxy-deps.node.mjs.map +1 -0
- package/dist/es/ai-model/service-caller/proxy-deps.stub.mjs +12 -0
- package/dist/es/ai-model/service-caller/proxy-deps.stub.mjs.map +1 -0
- package/dist/es/ai-model/service-caller/semantic-retry.mjs +33 -0
- package/dist/es/ai-model/service-caller/semantic-retry.mjs.map +1 -0
- package/dist/es/ai-model/service-caller/types.mjs +0 -0
- package/dist/es/ai-model/shared/action-schema.mjs +15 -0
- package/dist/es/ai-model/shared/action-schema.mjs.map +1 -0
- package/dist/es/ai-model/shared/json.mjs +63 -0
- package/dist/es/ai-model/shared/json.mjs.map +1 -0
- package/dist/es/ai-model/shared/model-locate-result/bbox.mjs +60 -0
- package/dist/es/ai-model/shared/model-locate-result/bbox.mjs.map +1 -0
- package/dist/es/ai-model/shared/model-locate-result/coordinate-distance.mjs +10 -0
- package/dist/es/ai-model/shared/model-locate-result/coordinate-distance.mjs.map +1 -0
- package/dist/es/ai-model/shared/model-locate-result/errors.mjs +9 -0
- package/dist/es/ai-model/shared/model-locate-result/errors.mjs.map +1 -0
- package/dist/es/ai-model/shared/model-locate-result/factory.mjs +39 -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 +6 -0
- package/dist/es/ai-model/shared/model-locate-result/parse.mjs +45 -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 +67 -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/prompt-spec.mjs +110 -0
- package/dist/es/ai-model/shared/model-locate-result/prompt-spec.mjs.map +1 -0
- package/dist/es/ai-model/shared/model-locate-result/types.mjs +9 -0
- package/dist/es/ai-model/shared/model-locate-result/types.mjs.map +1 -0
- package/dist/es/ai-model/shared/multimodal-prompt.mjs +55 -0
- package/dist/es/ai-model/shared/multimodal-prompt.mjs.map +1 -0
- package/dist/es/ai-model/shared/xml.mjs +42 -0
- package/dist/es/ai-model/shared/xml.mjs.map +1 -0
- package/dist/es/ai-model/workflows/grounding/index.mjs +4 -0
- package/dist/es/ai-model/workflows/grounding/locate-result-rect.mjs +23 -0
- package/dist/es/ai-model/workflows/grounding/locate-result-rect.mjs.map +1 -0
- package/dist/es/ai-model/workflows/grounding/locate.mjs +168 -0
- package/dist/es/ai-model/workflows/grounding/locate.mjs.map +1 -0
- package/dist/es/ai-model/workflows/grounding/planning-action-locate.mjs +97 -0
- package/dist/es/ai-model/workflows/grounding/planning-action-locate.mjs.map +1 -0
- package/dist/es/ai-model/workflows/grounding/search-area-mapping.mjs +18 -0
- package/dist/es/ai-model/workflows/grounding/search-area-mapping.mjs.map +1 -0
- package/dist/es/ai-model/workflows/grounding/search-area.mjs +55 -0
- package/dist/es/ai-model/workflows/grounding/search-area.mjs.map +1 -0
- package/dist/es/ai-model/workflows/grounding/section-locate.mjs +146 -0
- package/dist/es/ai-model/workflows/grounding/section-locate.mjs.map +1 -0
- package/dist/es/ai-model/workflows/grounding/types.mjs +0 -0
- package/dist/es/ai-model/workflows/grounding/utils.mjs +50 -0
- package/dist/es/ai-model/workflows/grounding/utils.mjs.map +1 -0
- package/dist/es/ai-model/workflows/insight/extraction.mjs +101 -0
- package/dist/es/ai-model/workflows/insight/extraction.mjs.map +1 -0
- package/dist/es/ai-model/workflows/insight/index.mjs +3 -0
- package/dist/es/ai-model/workflows/insight/insight-response-parser.mjs +26 -0
- package/dist/es/ai-model/workflows/insight/insight-response-parser.mjs.map +1 -0
- package/dist/es/ai-model/workflows/insight/order-sensitive.mjs +29 -0
- package/dist/es/ai-model/workflows/insight/order-sensitive.mjs.map +1 -0
- package/dist/es/ai-model/workflows/planning/conversation-history.mjs +185 -0
- package/dist/es/ai-model/workflows/planning/conversation-history.mjs.map +1 -0
- package/dist/es/ai-model/workflows/planning/custom-planning.mjs +129 -0
- package/dist/es/ai-model/workflows/planning/custom-planning.mjs.map +1 -0
- package/dist/es/ai-model/workflows/planning/index.mjs +4 -0
- package/dist/es/ai-model/workflows/planning/locate-normalization.mjs +41 -0
- package/dist/es/ai-model/workflows/planning/locate-normalization.mjs.map +1 -0
- package/dist/es/ai-model/workflows/planning/planning-action-log.mjs +22 -0
- package/dist/es/ai-model/workflows/planning/planning-action-log.mjs.map +1 -0
- package/dist/es/ai-model/workflows/planning/standard-planning-parser.mjs +99 -0
- package/dist/es/ai-model/workflows/planning/standard-planning-parser.mjs.map +1 -0
- package/dist/es/ai-model/workflows/planning/standard-planning.mjs +219 -0
- package/dist/es/ai-model/workflows/planning/standard-planning.mjs.map +1 -0
- package/dist/es/ai-model/workflows/planning/types.mjs +0 -0
- package/dist/es/ai-model/workflows/recorder-generation/common.mjs +171 -0
- package/dist/es/ai-model/workflows/recorder-generation/common.mjs.map +1 -0
- package/dist/es/ai-model/workflows/recorder-generation/index.mjs +5 -0
- package/dist/es/ai-model/workflows/recorder-generation/markdown.mjs +253 -0
- package/dist/es/ai-model/workflows/recorder-generation/markdown.mjs.map +1 -0
- package/dist/es/ai-model/workflows/recorder-generation/metadata.mjs +83 -0
- package/dist/es/ai-model/workflows/recorder-generation/metadata.mjs.map +1 -0
- package/dist/es/ai-model/workflows/recorder-generation/playwright.mjs +123 -0
- package/dist/es/ai-model/workflows/recorder-generation/playwright.mjs.map +1 -0
- package/dist/es/ai-model/workflows/recorder-generation/yaml.mjs +162 -0
- package/dist/es/ai-model/workflows/recorder-generation/yaml.mjs.map +1 -0
- package/dist/es/common.mjs +12 -1
- package/dist/es/common.mjs.map +1 -1
- package/dist/es/constants.mjs +4 -0
- package/dist/es/constants.mjs.map +1 -0
- package/dist/es/device/index.mjs.map +1 -1
- package/dist/es/device/input-strategy.mjs +34 -0
- package/dist/es/device/input-strategy.mjs.map +1 -0
- package/dist/es/dump/html-utils.mjs +16 -1
- package/dist/es/dump/html-utils.mjs.map +1 -1
- package/dist/es/dump/image-reference.mjs +63 -0
- package/dist/es/dump/image-reference.mjs.map +1 -0
- package/dist/es/dump/report-action-dump.mjs +244 -0
- package/dist/es/dump/report-action-dump.mjs.map +1 -0
- package/dist/es/dump/report-dump-compactor.mjs +200 -0
- package/dist/es/dump/report-dump-compactor.mjs.map +1 -0
- package/dist/es/dump/screenshot-store.mjs +124 -37
- package/dist/es/dump/screenshot-store.mjs.map +1 -1
- package/dist/es/dump/task-service-dump.mjs +17 -0
- package/dist/es/dump/task-service-dump.mjs.map +1 -0
- package/dist/es/dump/task-status.mjs +18 -0
- package/dist/es/dump/task-status.mjs.map +1 -0
- package/dist/es/element-describer.mjs +198 -0
- package/dist/es/element-describer.mjs.map +1 -0
- package/dist/es/errors.mjs +20 -0
- package/dist/es/errors.mjs.map +1 -0
- package/dist/es/report-html-template.mjs +4 -0
- package/dist/es/report-html-template.mjs.map +1 -0
- package/dist/es/report-stats.mjs +113 -0
- package/dist/es/report-stats.mjs.map +1 -0
- package/dist/es/screenshot-item.mjs +7 -2
- package/dist/es/screenshot-item.mjs.map +1 -1
- package/dist/es/service/index.mjs +10 -5
- package/dist/es/service/index.mjs.map +1 -1
- package/dist/es/task-runner.mjs.map +1 -1
- package/dist/es/types.mjs.map +1 -1
- package/dist/es/utils.mjs +1 -1
- package/dist/es/yaml/cleanup.mjs +13 -0
- package/dist/es/yaml/cleanup.mjs.map +1 -0
- package/dist/lib/agent/agent.js +24 -11
- package/dist/lib/agent/agent.js.map +1 -1
- package/dist/lib/agent/cache-config.js +53 -0
- package/dist/lib/agent/cache-config.js.map +1 -0
- package/dist/lib/agent/file-chooser.js +125 -0
- package/dist/lib/agent/file-chooser.js.map +1 -0
- package/dist/lib/agent/insight.js +135 -0
- package/dist/lib/agent/insight.js.map +1 -0
- package/dist/lib/agent/metrics.js +115 -0
- package/dist/lib/agent/metrics.js.map +1 -0
- package/dist/lib/agent/progress/ai-act-progress.js +239 -0
- package/dist/lib/agent/progress/ai-act-progress.js.map +1 -0
- package/dist/lib/agent/progress/index.js +67 -0
- package/dist/lib/agent/progress/index.js.map +1 -0
- package/dist/lib/agent/progress/progress-bus.js +86 -0
- package/dist/lib/agent/progress/progress-bus.js.map +1 -0
- package/dist/lib/agent/prompt-context.js +62 -0
- package/dist/lib/agent/prompt-context.js.map +1 -0
- package/dist/lib/agent/record-to-report.js +48 -0
- package/dist/lib/agent/record-to-report.js.map +1 -0
- package/dist/lib/agent/run-gherkin-scenario.js +151 -0
- package/dist/lib/agent/run-gherkin-scenario.js.map +1 -0
- package/dist/lib/agent/run-markdown.js +96 -0
- package/dist/lib/agent/run-markdown.js.map +1 -0
- package/dist/lib/agent/screenshot-preparation.js +74 -0
- package/dist/lib/agent/screenshot-preparation.js.map +1 -0
- package/dist/lib/agent/ui-observer.js +425 -0
- package/dist/lib/agent/ui-observer.js.map +1 -0
- package/dist/lib/agent/utils.js +46 -2
- package/dist/lib/agent/utils.js.map +1 -1
- package/dist/lib/ai-model/connectivity/fixture.js +45 -0
- package/dist/lib/ai-model/connectivity/fixture.js.map +1 -0
- package/dist/lib/ai-model/connectivity/index.js +38 -0
- package/dist/lib/ai-model/connectivity/index.js.map +1 -0
- package/dist/lib/ai-model/connectivity/run-connectivity-test.js +204 -0
- package/dist/lib/ai-model/connectivity/run-connectivity-test.js.map +1 -0
- package/dist/lib/ai-model/conversation-history.js.map +1 -1
- package/dist/lib/ai-model/index.js +15 -11
- package/dist/lib/ai-model/inspect.js +1 -1
- package/dist/lib/ai-model/inspect.js.map +1 -1
- package/dist/lib/ai-model/model-adapter/chat-completion.js +103 -0
- package/dist/lib/ai-model/model-adapter/chat-completion.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/custom-planning-action.js +40 -0
- package/dist/lib/ai-model/model-adapter/custom-planning-action.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/custom-planning-types.js +20 -0
- package/dist/lib/ai-model/model-adapter/custom-planning-types.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/default-insight-protocol.js +62 -0
- package/dist/lib/ai-model/model-adapter/default-insight-protocol.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/default-locate-protocol.js +182 -0
- package/dist/lib/ai-model/model-adapter/default-locate-protocol.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/default-planning-protocol.js +170 -0
- package/dist/lib/ai-model/model-adapter/default-planning-protocol.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/image-preprocess.js +61 -0
- package/dist/lib/ai-model/model-adapter/image-preprocess.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/index.js +38 -0
- package/dist/lib/ai-model/model-adapter/index.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/insight-protocol.js +20 -0
- package/dist/lib/ai-model/model-adapter/insight-protocol.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/insight.js +50 -0
- package/dist/lib/ai-model/model-adapter/insight.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/locate-protocol.js +20 -0
- package/dist/lib/ai-model/model-adapter/locate-protocol.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/locate.js +87 -0
- package/dist/lib/ai-model/model-adapter/locate.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/planning-protocol.js +20 -0
- package/dist/lib/ai-model/model-adapter/planning-protocol.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/planning.js +86 -0
- package/dist/lib/ai-model/model-adapter/planning.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/resolve.js +88 -0
- package/dist/lib/ai-model/model-adapter/resolve.js.map +1 -0
- package/dist/lib/ai-model/model-adapter/types.js +20 -0
- package/dist/lib/ai-model/model-adapter/types.js.map +1 -0
- package/dist/lib/ai-model/models/auto-glm/actions.js +239 -0
- 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 +45 -0
- package/dist/lib/ai-model/models/auto-glm/locate.js.map +1 -0
- package/dist/lib/ai-model/models/auto-glm/parser.js +260 -0
- package/dist/lib/ai-model/models/auto-glm/parser.js.map +1 -0
- package/dist/lib/ai-model/models/auto-glm/planning.js +67 -0
- package/dist/lib/ai-model/models/auto-glm/planning.js.map +1 -0
- package/dist/lib/ai-model/models/auto-glm/prompt.js +257 -0
- package/dist/lib/ai-model/models/auto-glm/prompt.js.map +1 -0
- package/dist/lib/ai-model/models/deepseek/adapter.js +113 -0
- package/dist/lib/ai-model/models/deepseek/adapter.js.map +1 -0
- package/dist/lib/ai-model/models/deepseek/locate-protocol.js +132 -0
- package/dist/lib/ai-model/models/deepseek/locate-protocol.js.map +1 -0
- package/dist/lib/ai-model/models/default.js +47 -0
- package/dist/lib/ai-model/models/default.js.map +1 -0
- package/dist/lib/ai-model/models/doubao.js +132 -0
- package/dist/lib/ai-model/models/doubao.js.map +1 -0
- package/dist/lib/ai-model/models/gemini.js +137 -0
- package/dist/lib/ai-model/models/gemini.js.map +1 -0
- package/dist/lib/ai-model/models/glm.js +80 -0
- package/dist/lib/ai-model/models/glm.js.map +1 -0
- package/dist/lib/ai-model/models/gpt.js +77 -0
- package/dist/lib/ai-model/models/gpt.js.map +1 -0
- package/dist/lib/ai-model/models/index.js +41 -0
- package/dist/lib/ai-model/models/index.js.map +1 -0
- package/dist/lib/ai-model/models/kimi.js +136 -0
- package/dist/lib/ai-model/models/kimi.js.map +1 -0
- package/dist/lib/ai-model/models/mimo.js +70 -0
- package/dist/lib/ai-model/models/mimo.js.map +1 -0
- package/dist/lib/ai-model/models/qwen.js +173 -0
- package/dist/lib/ai-model/models/qwen.js.map +1 -0
- package/dist/lib/ai-model/models/registry.js +91 -0
- package/dist/lib/ai-model/models/registry.js.map +1 -0
- package/dist/lib/ai-model/models/ui-tars/actions.js +181 -0
- package/dist/lib/ai-model/models/ui-tars/actions.js.map +1 -0
- package/dist/lib/ai-model/models/ui-tars/adapter.js +136 -0
- package/dist/lib/ai-model/models/ui-tars/adapter.js.map +1 -0
- package/dist/lib/ai-model/models/ui-tars/parser.js +74 -0
- package/dist/lib/ai-model/models/ui-tars/parser.js.map +1 -0
- package/dist/lib/ai-model/models/ui-tars/planning.js +59 -0
- package/dist/lib/ai-model/models/ui-tars/planning.js.map +1 -0
- package/dist/lib/ai-model/models/ui-tars/prompt.js +73 -0
- package/dist/lib/ai-model/models/ui-tars/prompt.js.map +1 -0
- package/dist/lib/ai-model/models/utils/intent.js +40 -0
- package/dist/lib/ai-model/models/utils/intent.js.map +1 -0
- package/dist/lib/ai-model/prompt/insight/index.js +45 -0
- package/dist/lib/ai-model/prompt/insight/index.js.map +1 -0
- package/dist/lib/ai-model/prompt/insight/system-prompt.js +138 -0
- package/dist/lib/ai-model/prompt/insight/system-prompt.js.map +1 -0
- package/dist/lib/ai-model/prompt/insight/user-prompt.js +60 -0
- package/dist/lib/ai-model/prompt/insight/user-prompt.js.map +1 -0
- package/dist/lib/ai-model/prompt/locate/element-system-prompt.js +46 -0
- package/dist/lib/ai-model/prompt/locate/element-system-prompt.js.map +1 -0
- package/dist/lib/ai-model/prompt/locate/grounding-rules.js +47 -0
- package/dist/lib/ai-model/prompt/locate/grounding-rules.js.map +1 -0
- package/dist/lib/ai-model/prompt/locate/index.js +46 -0
- package/dist/lib/ai-model/prompt/locate/index.js.map +1 -0
- package/dist/lib/ai-model/prompt/locate/search-area-system-prompt.js +43 -0
- package/dist/lib/ai-model/prompt/locate/search-area-system-prompt.js.map +1 -0
- package/dist/lib/ai-model/prompt/planning/action-output-example.js +92 -0
- package/dist/lib/ai-model/prompt/planning/action-output-example.js.map +1 -0
- package/dist/lib/ai-model/prompt/planning/action-space-description.js +75 -0
- package/dist/lib/ai-model/prompt/planning/action-space-description.js.map +1 -0
- package/dist/lib/ai-model/prompt/planning/index.js +63 -0
- package/dist/lib/ai-model/prompt/planning/index.js.map +1 -0
- package/dist/lib/ai-model/prompt/planning/multi-turn-example.js +255 -0
- package/dist/lib/ai-model/prompt/planning/multi-turn-example.js.map +1 -0
- package/dist/lib/ai-model/prompt/planning/planning-response-example.js +59 -0
- package/dist/lib/ai-model/prompt/planning/planning-response-example.js.map +1 -0
- package/dist/lib/ai-model/prompt/planning/sub-goals-text.js +51 -0
- package/dist/lib/ai-model/prompt/planning/sub-goals-text.js.map +1 -0
- package/dist/lib/ai-model/prompt/planning/system-prompt.js +327 -0
- package/dist/lib/ai-model/prompt/planning/system-prompt.js.map +1 -0
- package/dist/lib/ai-model/service-caller/codex-app-server.js +1 -0
- package/dist/lib/ai-model/service-caller/codex-app-server.js.map +1 -1
- package/dist/lib/ai-model/service-caller/index.js +35 -16
- package/dist/lib/ai-model/service-caller/index.js.map +1 -1
- package/dist/lib/ai-model/service-caller/model-call-recorder.js +124 -0
- package/dist/lib/ai-model/service-caller/model-call-recorder.js.map +1 -0
- package/dist/lib/ai-model/service-caller/openai-error.js +184 -0
- package/dist/lib/ai-model/service-caller/openai-error.js.map +1 -0
- package/dist/lib/ai-model/service-caller/proxy-deps.node.js +46 -0
- package/dist/lib/ai-model/service-caller/proxy-deps.node.js.map +1 -0
- package/dist/lib/ai-model/service-caller/proxy-deps.stub.js +49 -0
- package/dist/lib/ai-model/service-caller/proxy-deps.stub.js.map +1 -0
- package/dist/lib/ai-model/service-caller/semantic-retry.js +70 -0
- package/dist/lib/ai-model/service-caller/semantic-retry.js.map +1 -0
- package/dist/lib/ai-model/service-caller/types.js +20 -0
- package/dist/lib/ai-model/service-caller/types.js.map +1 -0
- package/dist/lib/ai-model/shared/action-schema.js +49 -0
- package/dist/lib/ai-model/shared/action-schema.js.map +1 -0
- package/dist/lib/ai-model/shared/json.js +103 -0
- package/dist/lib/ai-model/shared/json.js.map +1 -0
- package/dist/lib/ai-model/shared/model-locate-result/bbox.js +106 -0
- package/dist/lib/ai-model/shared/model-locate-result/bbox.js.map +1 -0
- package/dist/lib/ai-model/shared/model-locate-result/coordinate-distance.js +44 -0
- package/dist/lib/ai-model/shared/model-locate-result/coordinate-distance.js.map +1 -0
- package/dist/lib/ai-model/shared/model-locate-result/errors.js +46 -0
- package/dist/lib/ai-model/shared/model-locate-result/errors.js.map +1 -0
- package/dist/lib/ai-model/shared/model-locate-result/factory.js +76 -0
- package/dist/lib/ai-model/shared/model-locate-result/factory.js.map +1 -0
- package/dist/lib/ai-model/shared/model-locate-result/index.js +66 -0
- 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 +88 -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 +101 -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/prompt-spec.js +156 -0
- package/dist/lib/ai-model/shared/model-locate-result/prompt-spec.js.map +1 -0
- package/dist/lib/ai-model/shared/model-locate-result/types.js +46 -0
- package/dist/lib/ai-model/shared/model-locate-result/types.js.map +1 -0
- package/dist/lib/ai-model/shared/multimodal-prompt.js +95 -0
- package/dist/lib/ai-model/shared/multimodal-prompt.js.map +1 -0
- package/dist/lib/ai-model/shared/xml.js +79 -0
- package/dist/lib/ai-model/shared/xml.js.map +1 -0
- package/dist/lib/ai-model/workflows/grounding/index.js +46 -0
- package/dist/lib/ai-model/workflows/grounding/index.js.map +1 -0
- package/dist/lib/ai-model/workflows/grounding/locate-result-rect.js +60 -0
- package/dist/lib/ai-model/workflows/grounding/locate-result-rect.js.map +1 -0
- package/dist/lib/ai-model/workflows/grounding/locate.js +208 -0
- package/dist/lib/ai-model/workflows/grounding/locate.js.map +1 -0
- package/dist/lib/ai-model/workflows/grounding/planning-action-locate.js +131 -0
- package/dist/lib/ai-model/workflows/grounding/planning-action-locate.js.map +1 -0
- package/dist/lib/ai-model/workflows/grounding/search-area-mapping.js +52 -0
- package/dist/lib/ai-model/workflows/grounding/search-area-mapping.js.map +1 -0
- package/dist/lib/ai-model/workflows/grounding/search-area.js +92 -0
- package/dist/lib/ai-model/workflows/grounding/search-area.js.map +1 -0
- package/dist/lib/ai-model/workflows/grounding/section-locate.js +180 -0
- package/dist/lib/ai-model/workflows/grounding/section-locate.js.map +1 -0
- package/dist/lib/ai-model/workflows/grounding/types.js +20 -0
- package/dist/lib/ai-model/workflows/grounding/types.js.map +1 -0
- package/dist/lib/ai-model/workflows/grounding/utils.js +87 -0
- package/dist/lib/ai-model/workflows/grounding/utils.js.map +1 -0
- package/dist/lib/ai-model/workflows/insight/extraction.js +135 -0
- package/dist/lib/ai-model/workflows/insight/extraction.js.map +1 -0
- package/dist/lib/ai-model/workflows/insight/index.js +42 -0
- package/dist/lib/ai-model/workflows/insight/index.js.map +1 -0
- package/dist/lib/ai-model/workflows/insight/insight-response-parser.js +60 -0
- package/dist/lib/ai-model/workflows/insight/insight-response-parser.js.map +1 -0
- package/dist/lib/ai-model/workflows/insight/order-sensitive.js +63 -0
- package/dist/lib/ai-model/workflows/insight/order-sensitive.js.map +1 -0
- package/dist/lib/ai-model/workflows/planning/conversation-history.js +219 -0
- package/dist/lib/ai-model/workflows/planning/conversation-history.js.map +1 -0
- package/dist/lib/ai-model/workflows/planning/custom-planning.js +166 -0
- package/dist/lib/ai-model/workflows/planning/custom-planning.js.map +1 -0
- package/dist/lib/ai-model/workflows/planning/index.js +49 -0
- package/dist/lib/ai-model/workflows/planning/index.js.map +1 -0
- package/dist/lib/ai-model/workflows/planning/locate-normalization.js +75 -0
- package/dist/lib/ai-model/workflows/planning/locate-normalization.js.map +1 -0
- package/dist/lib/ai-model/workflows/planning/planning-action-log.js +56 -0
- package/dist/lib/ai-model/workflows/planning/planning-action-log.js.map +1 -0
- package/dist/lib/ai-model/workflows/planning/standard-planning-parser.js +142 -0
- package/dist/lib/ai-model/workflows/planning/standard-planning-parser.js.map +1 -0
- package/dist/lib/ai-model/workflows/planning/standard-planning.js +253 -0
- package/dist/lib/ai-model/workflows/planning/standard-planning.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/ai-model/workflows/recorder-generation/common.js +232 -0
- package/dist/lib/ai-model/workflows/recorder-generation/common.js.map +1 -0
- package/dist/lib/ai-model/workflows/recorder-generation/index.js +68 -0
- package/dist/lib/ai-model/workflows/recorder-generation/index.js.map +1 -0
- package/dist/lib/ai-model/workflows/recorder-generation/markdown.js +293 -0
- package/dist/lib/ai-model/workflows/recorder-generation/markdown.js.map +1 -0
- package/dist/lib/ai-model/workflows/recorder-generation/metadata.js +117 -0
- package/dist/lib/ai-model/workflows/recorder-generation/metadata.js.map +1 -0
- package/dist/lib/ai-model/workflows/recorder-generation/playwright.js +184 -0
- package/dist/lib/ai-model/workflows/recorder-generation/playwright.js.map +1 -0
- package/dist/lib/ai-model/workflows/recorder-generation/yaml.js +232 -0
- package/dist/lib/ai-model/workflows/recorder-generation/yaml.js.map +1 -0
- package/dist/lib/common.js +18 -1
- package/dist/lib/common.js.map +1 -1
- package/dist/lib/constants.js +38 -0
- package/dist/lib/constants.js.map +1 -0
- package/dist/lib/device/index.js.map +1 -1
- package/dist/lib/device/input-strategy.js +80 -0
- package/dist/lib/device/input-strategy.js.map +1 -0
- package/dist/lib/dump/html-utils.js +18 -0
- package/dist/lib/dump/html-utils.js.map +1 -1
- package/dist/lib/dump/image-reference.js +115 -0
- package/dist/lib/dump/image-reference.js.map +1 -0
- package/dist/lib/dump/report-action-dump.js +284 -0
- package/dist/lib/dump/report-action-dump.js.map +1 -0
- package/dist/lib/dump/report-dump-compactor.js +234 -0
- package/dist/lib/dump/report-dump-compactor.js.map +1 -0
- package/dist/lib/dump/screenshot-store.js +146 -38
- package/dist/lib/dump/screenshot-store.js.map +1 -1
- package/dist/lib/dump/task-service-dump.js +54 -0
- package/dist/lib/dump/task-service-dump.js.map +1 -0
- package/dist/lib/dump/task-status.js +55 -0
- package/dist/lib/dump/task-status.js.map +1 -0
- package/dist/lib/element-describer.js +238 -0
- package/dist/lib/element-describer.js.map +1 -0
- package/dist/lib/errors.js +54 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/report-html-template.js +38 -0
- package/dist/lib/report-html-template.js.map +1 -0
- package/dist/lib/report-stats.js +147 -0
- package/dist/lib/report-stats.js.map +1 -0
- package/dist/lib/screenshot-item.js +7 -2
- package/dist/lib/screenshot-item.js.map +1 -1
- package/dist/lib/service/index.js +10 -5
- package/dist/lib/service/index.js.map +1 -1
- package/dist/lib/task-runner.js.map +1 -1
- package/dist/lib/types.js +2 -2
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/lib/yaml/cleanup.js +47 -0
- package/dist/lib/yaml/cleanup.js.map +1 -0
- package/dist/types/agent/agent.d.ts +5 -9
- package/dist/types/agent/cache-config.d.ts +2 -0
- package/dist/types/agent/file-chooser.d.ts +19 -0
- package/dist/types/agent/insight.d.ts +21 -0
- package/dist/types/agent/metrics.d.ts +48 -0
- package/dist/types/agent/progress/ai-act-progress.d.ts +21 -0
- package/dist/types/agent/progress/index.d.ts +2 -0
- package/dist/types/agent/progress/progress-bus.d.ts +33 -0
- package/dist/types/agent/prompt-context.d.ts +3 -0
- package/dist/types/agent/record-to-report.d.ts +2 -0
- package/dist/types/agent/run-gherkin-scenario.d.ts +26 -0
- package/dist/types/agent/run-markdown.d.ts +6 -0
- package/dist/types/agent/screenshot-preparation.d.ts +20 -0
- package/dist/types/agent/ui-observer.d.ts +103 -0
- package/dist/types/agent/utils.d.ts +12 -1
- package/dist/types/ai-model/connectivity/fixture.d.ts +5 -0
- package/dist/types/ai-model/connectivity/index.d.ts +1 -0
- package/dist/types/ai-model/connectivity/run-connectivity-test.d.ts +11 -0
- package/dist/types/ai-model/index.d.ts +2 -0
- package/dist/types/ai-model/model-adapter/chat-completion.d.ts +2 -0
- package/dist/types/ai-model/model-adapter/custom-planning-action.d.ts +25 -0
- package/dist/types/ai-model/model-adapter/custom-planning-types.d.ts +31 -0
- package/dist/types/ai-model/model-adapter/default-insight-protocol.d.ts +2 -0
- package/dist/types/ai-model/model-adapter/default-locate-protocol.d.ts +7 -0
- package/dist/types/ai-model/model-adapter/default-planning-protocol.d.ts +25 -0
- package/dist/types/ai-model/model-adapter/image-preprocess.d.ts +30 -0
- package/dist/types/ai-model/model-adapter/index.d.ts +2 -0
- package/dist/types/ai-model/model-adapter/insight-protocol.d.ts +24 -0
- package/dist/types/ai-model/model-adapter/insight.d.ts +3 -0
- package/dist/types/ai-model/model-adapter/locate-protocol.d.ts +23 -0
- package/dist/types/ai-model/model-adapter/locate.d.ts +4 -0
- package/dist/types/ai-model/model-adapter/planning-protocol.d.ts +53 -0
- package/dist/types/ai-model/model-adapter/planning.d.ts +6 -0
- package/dist/types/ai-model/model-adapter/resolve.d.ts +12 -0
- package/dist/types/ai-model/model-adapter/types.d.ts +218 -0
- package/dist/types/ai-model/models/auto-glm/actions.d.ts +81 -0
- package/dist/types/ai-model/models/auto-glm/adapter.d.ts +5 -0
- package/dist/types/ai-model/models/auto-glm/locate.d.ts +2 -0
- package/dist/types/ai-model/models/auto-glm/parser.d.ts +14 -0
- package/dist/types/ai-model/models/auto-glm/planning.d.ts +5 -0
- package/dist/types/ai-model/models/auto-glm/prompt.d.ts +4 -0
- package/dist/types/ai-model/models/deepseek/adapter.d.ts +39 -0
- package/dist/types/ai-model/models/deepseek/locate-protocol.d.ts +5 -0
- package/dist/types/ai-model/models/default.d.ts +2 -0
- package/dist/types/ai-model/models/doubao.d.ts +7 -0
- package/dist/types/ai-model/models/gemini.d.ts +37 -0
- package/dist/types/ai-model/models/glm.d.ts +21 -0
- package/dist/types/ai-model/models/gpt.d.ts +20 -0
- package/dist/types/ai-model/models/index.d.ts +2 -0
- package/dist/types/ai-model/models/kimi.d.ts +45 -0
- package/dist/types/ai-model/models/mimo.d.ts +10 -0
- package/dist/types/ai-model/models/qwen.d.ts +33 -0
- package/dist/types/ai-model/models/registry.d.ts +187 -0
- package/dist/types/ai-model/models/ui-tars/actions.d.ts +3 -0
- package/dist/types/ai-model/models/ui-tars/adapter.d.ts +6 -0
- package/dist/types/ai-model/models/ui-tars/parser.d.ts +72 -0
- package/dist/types/ai-model/models/ui-tars/planning.d.ts +4 -0
- package/dist/types/ai-model/models/ui-tars/prompt.d.ts +2 -0
- package/dist/types/ai-model/models/utils/intent.d.ts +2 -0
- package/dist/types/ai-model/prompt/insight/index.d.ts +2 -0
- package/dist/types/ai-model/prompt/insight/system-prompt.d.ts +6 -0
- package/dist/types/ai-model/prompt/insight/user-prompt.d.ts +3 -0
- package/dist/types/ai-model/prompt/locate/element-system-prompt.d.ts +4 -0
- package/dist/types/ai-model/prompt/locate/grounding-rules.d.ts +1 -0
- package/dist/types/ai-model/prompt/locate/index.d.ts +3 -0
- package/dist/types/ai-model/prompt/locate/search-area-system-prompt.d.ts +4 -0
- package/dist/types/ai-model/prompt/planning/action-output-example.d.ts +17 -0
- package/dist/types/ai-model/prompt/planning/action-space-description.d.ts +11 -0
- package/dist/types/ai-model/prompt/planning/index.d.ts +6 -0
- package/dist/types/ai-model/prompt/planning/multi-turn-example.d.ts +10 -0
- package/dist/types/ai-model/prompt/planning/planning-response-example.d.ts +28 -0
- package/dist/types/ai-model/prompt/planning/sub-goals-text.d.ts +2 -0
- package/dist/types/ai-model/prompt/planning/system-prompt.d.ts +18 -0
- package/dist/types/ai-model/service-caller/index.d.ts +21 -6
- package/dist/types/ai-model/service-caller/model-call-recorder.d.ts +12 -0
- package/dist/types/ai-model/service-caller/openai-error.d.ts +26 -0
- package/dist/types/ai-model/service-caller/proxy-deps.node.d.ts +2 -0
- package/dist/types/ai-model/service-caller/proxy-deps.stub.d.ts +2 -0
- package/dist/types/ai-model/service-caller/semantic-retry.d.ts +30 -0
- package/dist/types/ai-model/service-caller/types.d.ts +2 -0
- package/dist/types/ai-model/shared/action-schema.d.ts +4 -0
- package/dist/types/ai-model/shared/json.d.ts +26 -0
- package/dist/types/ai-model/shared/model-locate-result/bbox.d.ts +6 -0
- package/dist/types/ai-model/shared/model-locate-result/coordinate-distance.d.ts +4 -0
- package/dist/types/ai-model/shared/model-locate-result/errors.d.ts +2 -0
- package/dist/types/ai-model/shared/model-locate-result/factory.d.ts +3 -0
- package/dist/types/ai-model/shared/model-locate-result/index.d.ts +7 -0
- package/dist/types/ai-model/shared/model-locate-result/parse.d.ts +8 -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/prompt-spec.d.ts +6 -0
- package/dist/types/ai-model/shared/model-locate-result/types.d.ts +150 -0
- package/dist/types/ai-model/shared/multimodal-prompt.d.ts +13 -0
- package/dist/types/ai-model/shared/xml.d.ts +15 -0
- package/dist/types/ai-model/workflows/grounding/index.d.ts +3 -0
- package/dist/types/ai-model/workflows/grounding/locate-result-rect.d.ts +5 -0
- package/dist/types/ai-model/workflows/grounding/locate.d.ts +7 -0
- package/dist/types/ai-model/workflows/grounding/planning-action-locate.d.ts +4 -0
- package/dist/types/ai-model/workflows/grounding/search-area-mapping.d.ts +4 -0
- package/dist/types/ai-model/workflows/grounding/search-area.d.ts +18 -0
- package/dist/types/ai-model/workflows/grounding/section-locate.d.ts +16 -0
- package/dist/types/ai-model/workflows/grounding/types.d.ts +56 -0
- package/dist/types/ai-model/workflows/grounding/utils.d.ts +25 -0
- package/dist/types/ai-model/workflows/insight/extraction.d.ts +18 -0
- package/dist/types/ai-model/workflows/insight/index.d.ts +2 -0
- package/dist/types/ai-model/workflows/insight/insight-response-parser.d.ts +4 -0
- package/dist/types/ai-model/workflows/insight/order-sensitive.d.ts +6 -0
- package/dist/types/ai-model/workflows/planning/conversation-history.d.ts +105 -0
- package/dist/types/ai-model/workflows/planning/custom-planning.d.ts +7 -0
- package/dist/types/ai-model/workflows/planning/index.d.ts +3 -0
- package/dist/types/ai-model/workflows/planning/locate-normalization.d.ts +12 -0
- package/dist/types/ai-model/workflows/planning/planning-action-log.d.ts +2 -0
- package/dist/types/ai-model/workflows/planning/standard-planning-parser.d.ts +31 -0
- package/dist/types/ai-model/workflows/planning/standard-planning.d.ts +4 -0
- package/dist/types/ai-model/workflows/planning/types.d.ts +16 -0
- package/dist/types/ai-model/workflows/recorder-generation/common.d.ts +89 -0
- package/dist/types/ai-model/workflows/recorder-generation/index.d.ts +7 -0
- package/dist/types/ai-model/workflows/recorder-generation/markdown.d.ts +7 -0
- package/dist/types/ai-model/workflows/recorder-generation/metadata.d.ts +13 -0
- package/dist/types/ai-model/workflows/recorder-generation/playwright.d.ts +26 -0
- package/dist/types/ai-model/workflows/recorder-generation/yaml.d.ts +17 -0
- package/dist/types/common.d.ts +2 -0
- package/dist/types/constants.d.ts +1 -0
- package/dist/types/device/index.d.ts +15 -4
- package/dist/types/device/input-strategy.d.ts +44 -0
- package/dist/types/dump/html-utils.d.ts +1 -0
- package/dist/types/dump/image-reference.d.ts +36 -0
- package/dist/types/dump/report-action-dump.d.ts +127 -0
- package/dist/types/dump/report-dump-compactor.d.ts +7 -0
- package/dist/types/dump/screenshot-store.d.ts +32 -15
- package/dist/types/dump/task-service-dump.d.ts +3 -0
- package/dist/types/dump/task-status.d.ts +41 -0
- package/dist/types/element-describer.d.ts +43 -0
- package/dist/types/errors.d.ts +5 -0
- package/dist/types/report-html-template.d.ts +1 -0
- package/dist/types/report-stats.d.ts +39 -0
- package/dist/types/screenshot-item.d.ts +1 -0
- package/dist/types/service/index.d.ts +6 -2
- package/dist/types/task-runner.d.ts +6 -0
- package/dist/types/types.d.ts +98 -5
- package/dist/types/yaml/cleanup.d.ts +2 -0
- package/package.json +2 -2
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
AgentProgressBus: ()=>AgentProgressBus
|
|
28
|
+
});
|
|
29
|
+
const logger_namespaceObject = require("@aiscene/shared/logger");
|
|
30
|
+
function _define_property(obj, key, value) {
|
|
31
|
+
if (key in obj) Object.defineProperty(obj, key, {
|
|
32
|
+
value: value,
|
|
33
|
+
enumerable: true,
|
|
34
|
+
configurable: true,
|
|
35
|
+
writable: true
|
|
36
|
+
});
|
|
37
|
+
else obj[key] = value;
|
|
38
|
+
return obj;
|
|
39
|
+
}
|
|
40
|
+
const debugError = (0, logger_namespaceObject.getDebug)('agent-progress-bus', {
|
|
41
|
+
console: true
|
|
42
|
+
});
|
|
43
|
+
class AgentProgressBus {
|
|
44
|
+
subscribe(listener) {
|
|
45
|
+
this.listeners.push(listener);
|
|
46
|
+
return ()=>{
|
|
47
|
+
this.unsubscribe(listener);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
unsubscribe(listener) {
|
|
51
|
+
const index = this.listeners.indexOf(listener);
|
|
52
|
+
if (index > -1) this.listeners.splice(index, 1);
|
|
53
|
+
}
|
|
54
|
+
clear() {
|
|
55
|
+
this.listeners = [];
|
|
56
|
+
}
|
|
57
|
+
get listenerCount() {
|
|
58
|
+
return this.listeners.length;
|
|
59
|
+
}
|
|
60
|
+
constructor(){
|
|
61
|
+
_define_property(this, "listeners", []);
|
|
62
|
+
_define_property(this, "sequence", 0);
|
|
63
|
+
_define_property(this, "publish", async (scope, phase, data)=>{
|
|
64
|
+
const event = {
|
|
65
|
+
scope,
|
|
66
|
+
phase,
|
|
67
|
+
sequence: ++this.sequence,
|
|
68
|
+
data
|
|
69
|
+
};
|
|
70
|
+
for (const listener of this.listeners)try {
|
|
71
|
+
await listener(event);
|
|
72
|
+
} catch (error) {
|
|
73
|
+
debugError('error in progress listener', error);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.AgentProgressBus = __webpack_exports__.AgentProgressBus;
|
|
79
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
80
|
+
"AgentProgressBus"
|
|
81
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
82
|
+
Object.defineProperty(exports, '__esModule', {
|
|
83
|
+
value: true
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
//# sourceMappingURL=progress-bus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent/progress/progress-bus.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../../src/agent/progress/progress-bus.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 { AgentProgressEvent, AgentProgressListener } from '@/types';\nimport { getDebug } from '@aiscene/shared/logger';\n\nconst debugError = getDebug('agent-progress-bus', { console: true });\n\n/**\n * A function that publishes one progress notification: it names the producer\n * (`scope`) and the lifecycle `phase`, and hands over the structured `data`.\n * The bus owns the sequence number, so producers never stamp it themselves.\n */\nexport type AgentProgressPublisher = (\n scope: string,\n phase: string,\n data: unknown,\n) => Promise<void>;\n\n/**\n * The generic agent progress bus.\n *\n * A single broadcast channel every producer publishes onto and every consumer\n * subscribes to. The bus is intentionally tiny and producer-agnostic: it stamps\n * a monotonic sequence, wraps the payload in an {@link AgentProgressEvent}\n * envelope, and fans it out to listeners with per-listener error isolation.\n * `aiAct` is the first producer; adding more requires nothing here.\n */\nexport class AgentProgressBus {\n private listeners: AgentProgressListener[] = [];\n\n private sequence = 0;\n\n /**\n * Register a listener. Returns a disposer that removes it.\n */\n subscribe(listener: AgentProgressListener): () => void {\n this.listeners.push(listener);\n return () => {\n this.unsubscribe(listener);\n };\n }\n\n unsubscribe(listener: AgentProgressListener): void {\n const index = this.listeners.indexOf(listener);\n if (index > -1) {\n this.listeners.splice(index, 1);\n }\n }\n\n clear(): void {\n this.listeners = [];\n }\n\n get listenerCount(): number {\n return this.listeners.length;\n }\n\n /**\n * Stamp a monotonic sequence, build the envelope, and broadcast it to every\n * listener in registration order. A listener that throws is logged and\n * skipped so it cannot break the others or the producer.\n */\n publish: AgentProgressPublisher = async (scope, phase, data) => {\n const event: AgentProgressEvent = {\n scope,\n phase,\n sequence: ++this.sequence,\n data,\n };\n for (const listener of this.listeners) {\n try {\n await listener(event);\n } catch (error) {\n debugError('error in progress listener', error);\n }\n }\n };\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","debugError","getDebug","AgentProgressBus","listener","index","scope","phase","data","event","error"],"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;;;;;;;;;;;;;;;;;;ACHA,MAAMI,aAAaC,AAAAA,IAAAA,uBAAAA,QAAAA,AAAAA,EAAS,sBAAsB;IAAE,SAAS;AAAK;AAsB3D,MAAMC;IAQX,UAAUC,QAA+B,EAAc;QACrD,IAAI,CAAC,SAAS,CAAC,IAAI,CAACA;QACpB,OAAO;YACL,IAAI,CAAC,WAAW,CAACA;QACnB;IACF;IAEA,YAAYA,QAA+B,EAAQ;QACjD,MAAMC,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAACD;QACrC,IAAIC,QAAQ,IACV,IAAI,CAAC,SAAS,CAAC,MAAM,CAACA,OAAO;IAEjC;IAEA,QAAc;QACZ,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;IAEA,IAAI,gBAAwB;QAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM;IAC9B;;QA3BA,uBAAQ,aAAqC,EAAE;QAE/C,uBAAQ,YAAW;QAgCnB,kCAAkC,OAAOC,OAAOC,OAAOC;YACrD,MAAMC,QAA4B;gBAChCH;gBACAC;gBACA,UAAU,EAAE,IAAI,CAAC,QAAQ;gBACzBC;YACF;YACA,KAAK,MAAMJ,YAAY,IAAI,CAAC,SAAS,CACnC,IAAI;gBACF,MAAMA,SAASK;YACjB,EAAE,OAAOC,OAAO;gBACdT,WAAW,8BAA8BS;YAC3C;QAEJ;;AACF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
buildLocatePromptWithContext: ()=>buildLocatePromptWithContext,
|
|
28
|
+
buildPromptWithContext: ()=>buildPromptWithContext
|
|
29
|
+
});
|
|
30
|
+
const buildPromptWithContext = (prompt, context)=>{
|
|
31
|
+
const trimmedContext = context?.trim();
|
|
32
|
+
if (!trimmedContext) return prompt;
|
|
33
|
+
const promptText = 'string' == typeof prompt ? prompt : prompt.prompt;
|
|
34
|
+
const promptWithContext = `Context for this request:\n${trimmedContext}\n\n${promptText}`;
|
|
35
|
+
if ('string' == typeof prompt) return promptWithContext;
|
|
36
|
+
return {
|
|
37
|
+
...prompt,
|
|
38
|
+
prompt: promptWithContext
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
const buildLocatePromptWithContext = (prompt, context)=>{
|
|
42
|
+
const trimmedContext = context?.trim();
|
|
43
|
+
if (!trimmedContext) return prompt;
|
|
44
|
+
const promptText = 'string' == typeof prompt ? prompt : prompt.prompt;
|
|
45
|
+
const promptWithContext = `<CONTEXT>\n${trimmedContext}\n</CONTEXT>\n\n<LOCATE_TARGET>\n${promptText}\n</LOCATE_TARGET>`;
|
|
46
|
+
if ('string' == typeof prompt) return promptWithContext;
|
|
47
|
+
return {
|
|
48
|
+
...prompt,
|
|
49
|
+
prompt: promptWithContext
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
exports.buildLocatePromptWithContext = __webpack_exports__.buildLocatePromptWithContext;
|
|
53
|
+
exports.buildPromptWithContext = __webpack_exports__.buildPromptWithContext;
|
|
54
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
55
|
+
"buildLocatePromptWithContext",
|
|
56
|
+
"buildPromptWithContext"
|
|
57
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
58
|
+
Object.defineProperty(exports, '__esModule', {
|
|
59
|
+
value: true
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
//# sourceMappingURL=prompt-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent/prompt-context.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/agent/prompt-context.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 { TUserPrompt } from '@/ai-model';\n\nexport const buildPromptWithContext = (\n prompt: TUserPrompt,\n context: string | undefined,\n): TUserPrompt => {\n const trimmedContext = context?.trim();\n if (!trimmedContext) {\n return prompt;\n }\n\n const promptText = typeof prompt === 'string' ? prompt : prompt.prompt;\n const promptWithContext = `Context for this request:\\n${trimmedContext}\\n\\n${promptText}`;\n\n if (typeof prompt === 'string') {\n return promptWithContext;\n }\n\n return {\n ...prompt,\n prompt: promptWithContext,\n };\n};\n\nexport const buildLocatePromptWithContext = (\n prompt: TUserPrompt,\n context: string | undefined,\n): TUserPrompt => {\n const trimmedContext = context?.trim();\n if (!trimmedContext) {\n return prompt;\n }\n\n const promptText = typeof prompt === 'string' ? prompt : prompt.prompt;\n const promptWithContext = `<CONTEXT>\\n${trimmedContext}\\n</CONTEXT>\\n\\n<LOCATE_TARGET>\\n${promptText}\\n</LOCATE_TARGET>`;\n\n if (typeof prompt === 'string') {\n return promptWithContext;\n }\n\n return {\n ...prompt,\n prompt: promptWithContext,\n };\n};\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","buildPromptWithContext","prompt","context","trimmedContext","promptText","promptWithContext","buildLocatePromptWithContext"],"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,MAAMI,yBAAyB,CACpCC,QACAC;IAEA,MAAMC,iBAAiBD,SAAS;IAChC,IAAI,CAACC,gBACH,OAAOF;IAGT,MAAMG,aAAa,AAAkB,YAAlB,OAAOH,SAAsBA,SAASA,OAAO,MAAM;IACtE,MAAMI,oBAAoB,CAAC,2BAA2B,EAAEF,eAAe,IAAI,EAAEC,YAAY;IAEzF,IAAI,AAAkB,YAAlB,OAAOH,QACT,OAAOI;IAGT,OAAO;QACL,GAAGJ,MAAM;QACT,QAAQI;IACV;AACF;AAEO,MAAMC,+BAA+B,CAC1CL,QACAC;IAEA,MAAMC,iBAAiBD,SAAS;IAChC,IAAI,CAACC,gBACH,OAAOF;IAGT,MAAMG,aAAa,AAAkB,YAAlB,OAAOH,SAAsBA,SAASA,OAAO,MAAM;IACtE,MAAMI,oBAAoB,CAAC,WAAW,EAAEF,eAAe,iCAAiC,EAAEC,WAAW,kBAAkB,CAAC;IAExH,IAAI,AAAkB,YAAlB,OAAOH,QACT,OAAOI;IAGT,OAAO;QACL,GAAGJ,MAAM;QACT,QAAQI;IACV;AACF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
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
|
+
normalizeRecordToReportScreenshot: ()=>normalizeRecordToReportScreenshot
|
|
28
|
+
});
|
|
29
|
+
const img_namespaceObject = require("@aiscene/shared/img");
|
|
30
|
+
function normalizeRecordToReportScreenshot(screenshot, index) {
|
|
31
|
+
if (!screenshot || 'string' != typeof screenshot.base64) throw new Error(`recordToReport: screenshot #${index + 1} must include a base64 string`);
|
|
32
|
+
if (void 0 !== screenshot.description && 'string' != typeof screenshot.description) throw new Error(`recordToReport: screenshot #${index + 1} description must be a string`);
|
|
33
|
+
return {
|
|
34
|
+
base64: (0, img_namespaceObject.normalizeScreenshotBase64)(screenshot.base64, {
|
|
35
|
+
label: `recordToReport: screenshot #${index + 1} base64`
|
|
36
|
+
}),
|
|
37
|
+
description: screenshot.description
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
exports.normalizeRecordToReportScreenshot = __webpack_exports__.normalizeRecordToReportScreenshot;
|
|
41
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
42
|
+
"normalizeRecordToReportScreenshot"
|
|
43
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
44
|
+
Object.defineProperty(exports, '__esModule', {
|
|
45
|
+
value: true
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=record-to-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent/record-to-report.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/agent/record-to-report.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 { RecordToReportScreenshot } from '@/types';\nimport { normalizeScreenshotBase64 } from '@aiscene/shared/img';\n\nexport function normalizeRecordToReportScreenshot(\n screenshot: RecordToReportScreenshot,\n index: number,\n): RecordToReportScreenshot {\n if (!screenshot || typeof screenshot.base64 !== 'string') {\n throw new Error(\n `recordToReport: screenshot #${index + 1} must include a base64 string`,\n );\n }\n\n if (\n screenshot.description !== undefined &&\n typeof screenshot.description !== 'string'\n ) {\n throw new Error(\n `recordToReport: screenshot #${index + 1} description must be a string`,\n );\n }\n\n return {\n base64: normalizeScreenshotBase64(screenshot.base64, {\n label: `recordToReport: screenshot #${index + 1} base64`,\n }),\n description: screenshot.description,\n };\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","normalizeRecordToReportScreenshot","screenshot","index","Error","undefined","normalizeScreenshotBase64"],"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,kCACdC,UAAoC,EACpCC,KAAa;IAEb,IAAI,CAACD,cAAc,AAA6B,YAA7B,OAAOA,WAAW,MAAM,EACzC,MAAM,IAAIE,MACR,CAAC,4BAA4B,EAAED,QAAQ,EAAE,6BAA6B,CAAC;IAI3E,IACED,AAA2BG,WAA3BH,WAAW,WAAW,IACtB,AAAkC,YAAlC,OAAOA,WAAW,WAAW,EAE7B,MAAM,IAAIE,MACR,CAAC,4BAA4B,EAAED,QAAQ,EAAE,6BAA6B,CAAC;IAI3E,OAAO;QACL,QAAQG,AAAAA,IAAAA,oBAAAA,yBAAAA,AAAAA,EAA0BJ,WAAW,MAAM,EAAE;YACnD,OAAO,CAAC,4BAA4B,EAAEC,QAAQ,EAAE,OAAO,CAAC;QAC1D;QACA,aAAaD,WAAW,WAAW;IACrC;AACF"}
|
|
@@ -0,0 +1,151 @@
|
|
|
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
|
+
parseGherkinScenario: ()=>parseGherkinScenario,
|
|
28
|
+
runGherkinScenario: ()=>runGherkinScenario
|
|
29
|
+
});
|
|
30
|
+
const stepKeywordPattern = /^(Given|When|Then|And|But)\s+(.+)$/i;
|
|
31
|
+
const headerPattern = /^(Scenario):\s*(.*)$/i;
|
|
32
|
+
const unsupportedHeaderPattern = /^(Feature|Background|Scenario Outline|Scenario Template|Examples|Rule):/i;
|
|
33
|
+
const normalizeStepKeyword = (keyword)=>{
|
|
34
|
+
const lowerKeyword = keyword.toLowerCase();
|
|
35
|
+
if ('given' === lowerKeyword) return 'Given';
|
|
36
|
+
if ('when' === lowerKeyword) return 'When';
|
|
37
|
+
if ('then' === lowerKeyword) return 'Then';
|
|
38
|
+
if ('and' === lowerKeyword) return 'And';
|
|
39
|
+
return 'But';
|
|
40
|
+
};
|
|
41
|
+
const isPrimaryKeyword = (keyword)=>'Given' === keyword || 'When' === keyword || 'Then' === keyword;
|
|
42
|
+
const resolveSteps = (steps)=>{
|
|
43
|
+
let previousPrimaryKeyword;
|
|
44
|
+
return steps.map((step)=>{
|
|
45
|
+
const effectiveKeyword = isPrimaryKeyword(step.keyword) ? step.keyword : previousPrimaryKeyword;
|
|
46
|
+
if (!effectiveKeyword) throw new Error(`runGherkinScenario cannot resolve "${step.keyword}" at line ${step.lineNumber}; use Given, When, or Then before ${step.keyword}.`);
|
|
47
|
+
previousPrimaryKeyword = effectiveKeyword;
|
|
48
|
+
return {
|
|
49
|
+
...step,
|
|
50
|
+
effectiveKeyword
|
|
51
|
+
};
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
const throwIfAborted = (abortSignal)=>{
|
|
55
|
+
if (!abortSignal?.aborted) return;
|
|
56
|
+
if ('function' == typeof abortSignal.throwIfAborted) abortSignal.throwIfAborted();
|
|
57
|
+
throw new Error(`runGherkinScenario aborted: ${abortSignal.reason || 'signal already aborted'}`);
|
|
58
|
+
};
|
|
59
|
+
const parseGherkinScenario = (scenarioText)=>{
|
|
60
|
+
const lines = scenarioText.split(/\r?\n/);
|
|
61
|
+
const scenarioSteps = [];
|
|
62
|
+
const anonymousSteps = [];
|
|
63
|
+
let scenario;
|
|
64
|
+
let scenarioCount = 0;
|
|
65
|
+
let section = 'prelude';
|
|
66
|
+
for (const [lineIndex, rawLine] of lines.entries()){
|
|
67
|
+
const lineNumber = lineIndex + 1;
|
|
68
|
+
const line = rawLine.trim();
|
|
69
|
+
if (!line || line.startsWith('#') || line.startsWith('@')) continue;
|
|
70
|
+
if ('"""' === line || "'''" === line) throw new Error(`runGherkinScenario does not support doc strings; found one at line ${lineNumber}.`);
|
|
71
|
+
if (line.startsWith('|')) throw new Error(`runGherkinScenario does not support data tables; found one at line ${lineNumber}.`);
|
|
72
|
+
if (unsupportedHeaderPattern.test(line)) throw new Error(`runGherkinScenario does not support "${line}" at line ${lineNumber}.`);
|
|
73
|
+
const headerMatch = line.match(headerPattern);
|
|
74
|
+
if (headerMatch) {
|
|
75
|
+
scenarioCount += 1;
|
|
76
|
+
scenario = headerMatch[2].trim() || void 0;
|
|
77
|
+
section = 'scenario';
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const stepMatch = line.match(stepKeywordPattern);
|
|
81
|
+
if (stepMatch) {
|
|
82
|
+
const step = {
|
|
83
|
+
keyword: normalizeStepKeyword(stepMatch[1]),
|
|
84
|
+
text: stepMatch[2].trim(),
|
|
85
|
+
lineNumber
|
|
86
|
+
};
|
|
87
|
+
if ('scenario' === section) scenarioSteps.push(step);
|
|
88
|
+
else anonymousSteps.push(step);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
throw new Error(`runGherkinScenario does not support content at line ${lineNumber}: ${line}`);
|
|
92
|
+
}
|
|
93
|
+
if (scenarioCount > 1) throw new Error(`runGherkinScenario expects exactly one Scenario, but found ${scenarioCount}.`);
|
|
94
|
+
if (1 === scenarioCount && anonymousSteps.length > 0) throw new Error('runGherkinScenario cannot mix anonymous steps with a Scenario block.');
|
|
95
|
+
const rawSteps = 1 === scenarioCount ? scenarioSteps : anonymousSteps;
|
|
96
|
+
if (0 === rawSteps.length) throw new Error('runGherkinScenario requires at least one Gherkin step.');
|
|
97
|
+
return {
|
|
98
|
+
scenario,
|
|
99
|
+
steps: resolveSteps(rawSteps)
|
|
100
|
+
};
|
|
101
|
+
};
|
|
102
|
+
const buildStepPrompt = (step)=>{
|
|
103
|
+
if ('Given' === step.effectiveKeyword) return `Set up this precondition: ${step.text}`;
|
|
104
|
+
if ('When' === step.effectiveKeyword) return `Perform this user action: ${step.text}`;
|
|
105
|
+
return `Verify that ${step.text}`;
|
|
106
|
+
};
|
|
107
|
+
const describeStepExecution = (step, action)=>{
|
|
108
|
+
const keywordMapping = step.keyword === step.effectiveKeyword ? step.keyword : `${step.keyword} as ${step.effectiveKeyword}`;
|
|
109
|
+
if ('Given' === step.effectiveKeyword) return `setting up the precondition (${keywordMapping} -> ${action})`;
|
|
110
|
+
if ('When' === step.effectiveKeyword) return `performing the user action (${keywordMapping} -> ${action})`;
|
|
111
|
+
return `verifying the expected result (${keywordMapping} -> ${action})`;
|
|
112
|
+
};
|
|
113
|
+
const describeErrorCause = (error)=>{
|
|
114
|
+
if (error instanceof Error && error.message) return ` Original error: ${error.message}`;
|
|
115
|
+
return '';
|
|
116
|
+
};
|
|
117
|
+
const runGherkinScenario = async (agent, scenarioText, opt)=>{
|
|
118
|
+
const parsedScenario = parseGherkinScenario(scenarioText);
|
|
119
|
+
const aiActOptions = {
|
|
120
|
+
...opt,
|
|
121
|
+
cacheable: false
|
|
122
|
+
};
|
|
123
|
+
for (const step of parsedScenario.steps){
|
|
124
|
+
throwIfAborted(opt?.abortSignal);
|
|
125
|
+
const action = 'Then' === step.effectiveKeyword ? 'aiAssert' : 'aiAct';
|
|
126
|
+
const prompt = buildStepPrompt(step);
|
|
127
|
+
try {
|
|
128
|
+
if ('aiAct' === action) await agent.aiAct(prompt, aiActOptions);
|
|
129
|
+
else if (opt?.context || opt?.abortSignal) await agent.aiAssert(prompt, void 0, {
|
|
130
|
+
context: opt.context,
|
|
131
|
+
abortSignal: opt.abortSignal
|
|
132
|
+
});
|
|
133
|
+
else await agent.aiAssert(prompt);
|
|
134
|
+
} catch (error) {
|
|
135
|
+
throw new Error(`runGherkinScenario failed while ${describeStepExecution(step, action)} at line ${step.lineNumber}: ${step.keyword} ${step.text}.${describeErrorCause(error)}`, {
|
|
136
|
+
cause: error
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
exports.parseGherkinScenario = __webpack_exports__.parseGherkinScenario;
|
|
142
|
+
exports.runGherkinScenario = __webpack_exports__.runGherkinScenario;
|
|
143
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
144
|
+
"parseGherkinScenario",
|
|
145
|
+
"runGherkinScenario"
|
|
146
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
147
|
+
Object.defineProperty(exports, '__esModule', {
|
|
148
|
+
value: true
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
//# sourceMappingURL=run-gherkin-scenario.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent/run-gherkin-scenario.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/agent/run-gherkin-scenario.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 { AiActOptions } from './agent';\n\nexport type GherkinStepKeyword = 'Given' | 'When' | 'Then' | 'And' | 'But';\n\ntype RunGherkinScenarioStepAction = 'aiAct' | 'aiAssert';\n\nexport type RunGherkinScenarioOptions = AiActOptions & {\n context?: string;\n};\n\ntype GherkinPrimaryKeyword = 'Given' | 'When' | 'Then';\n\ntype ParsedGherkinStep = {\n keyword: GherkinStepKeyword;\n effectiveKeyword: GherkinPrimaryKeyword;\n text: string;\n lineNumber: number;\n};\n\ntype RawGherkinStep = {\n keyword: GherkinStepKeyword;\n text: string;\n lineNumber: number;\n};\n\ntype ParsedGherkinScenario = {\n scenario?: string;\n steps: ParsedGherkinStep[];\n};\n\ntype GherkinScenarioAgent = {\n aiAct: (taskPrompt: string, opt?: AiActOptions) => Promise<unknown>;\n aiAssert: (\n assertion: string,\n msg?: string,\n opt?: { context?: string; abortSignal?: AbortSignal },\n ) => Promise<unknown>;\n};\n\nconst stepKeywordPattern = /^(Given|When|Then|And|But)\\s+(.+)$/i;\nconst headerPattern = /^(Scenario):\\s*(.*)$/i;\nconst unsupportedHeaderPattern =\n /^(Feature|Background|Scenario Outline|Scenario Template|Examples|Rule):/i;\n\nconst normalizeStepKeyword = (keyword: string): GherkinStepKeyword => {\n const lowerKeyword = keyword.toLowerCase();\n if (lowerKeyword === 'given') return 'Given';\n if (lowerKeyword === 'when') return 'When';\n if (lowerKeyword === 'then') return 'Then';\n if (lowerKeyword === 'and') return 'And';\n return 'But';\n};\n\nconst isPrimaryKeyword = (\n keyword: GherkinStepKeyword,\n): keyword is GherkinPrimaryKeyword => {\n return keyword === 'Given' || keyword === 'When' || keyword === 'Then';\n};\n\nconst resolveSteps = (steps: RawGherkinStep[]): ParsedGherkinStep[] => {\n let previousPrimaryKeyword: GherkinPrimaryKeyword | undefined;\n\n return steps.map((step) => {\n const effectiveKeyword = isPrimaryKeyword(step.keyword)\n ? step.keyword\n : previousPrimaryKeyword;\n\n if (!effectiveKeyword) {\n throw new Error(\n `runGherkinScenario cannot resolve \"${step.keyword}\" at line ${step.lineNumber}; use Given, When, or Then before ${step.keyword}.`,\n );\n }\n\n previousPrimaryKeyword = effectiveKeyword;\n\n return {\n ...step,\n effectiveKeyword,\n };\n });\n};\n\nconst throwIfAborted = (abortSignal: AbortSignal | undefined) => {\n if (!abortSignal?.aborted) {\n return;\n }\n\n if (typeof abortSignal.throwIfAborted === 'function') {\n abortSignal.throwIfAborted();\n }\n\n throw new Error(\n `runGherkinScenario aborted: ${abortSignal.reason || 'signal already aborted'}`,\n );\n};\n\nexport const parseGherkinScenario = (\n scenarioText: string,\n): ParsedGherkinScenario => {\n const lines = scenarioText.split(/\\r?\\n/);\n const scenarioSteps: RawGherkinStep[] = [];\n const anonymousSteps: RawGherkinStep[] = [];\n let scenario: string | undefined;\n let scenarioCount = 0;\n let section: 'prelude' | 'scenario' = 'prelude';\n\n for (const [lineIndex, rawLine] of lines.entries()) {\n const lineNumber = lineIndex + 1;\n const line = rawLine.trim();\n\n if (!line || line.startsWith('#') || line.startsWith('@')) {\n continue;\n }\n\n if (line === '\"\"\"' || line === \"'''\") {\n throw new Error(\n `runGherkinScenario does not support doc strings; found one at line ${lineNumber}.`,\n );\n }\n\n if (line.startsWith('|')) {\n throw new Error(\n `runGherkinScenario does not support data tables; found one at line ${lineNumber}.`,\n );\n }\n\n if (unsupportedHeaderPattern.test(line)) {\n throw new Error(\n `runGherkinScenario does not support \"${line}\" at line ${lineNumber}.`,\n );\n }\n\n const headerMatch = line.match(headerPattern);\n if (headerMatch) {\n scenarioCount += 1;\n scenario = headerMatch[2].trim() || undefined;\n section = 'scenario';\n continue;\n }\n\n const stepMatch = line.match(stepKeywordPattern);\n if (stepMatch) {\n const step = {\n keyword: normalizeStepKeyword(stepMatch[1]),\n text: stepMatch[2].trim(),\n lineNumber,\n };\n\n if (section === 'scenario') {\n scenarioSteps.push(step);\n } else {\n anonymousSteps.push(step);\n }\n\n continue;\n }\n\n throw new Error(\n `runGherkinScenario does not support content at line ${lineNumber}: ${line}`,\n );\n }\n\n if (scenarioCount > 1) {\n throw new Error(\n `runGherkinScenario expects exactly one Scenario, but found ${scenarioCount}.`,\n );\n }\n\n if (scenarioCount === 1 && anonymousSteps.length > 0) {\n throw new Error(\n 'runGherkinScenario cannot mix anonymous steps with a Scenario block.',\n );\n }\n\n const rawSteps = scenarioCount === 1 ? scenarioSteps : anonymousSteps;\n\n if (rawSteps.length === 0) {\n throw new Error('runGherkinScenario requires at least one Gherkin step.');\n }\n\n return {\n scenario,\n steps: resolveSteps(rawSteps),\n };\n};\n\nconst buildStepPrompt = (step: ParsedGherkinStep) => {\n if (step.effectiveKeyword === 'Given') {\n return `Set up this precondition: ${step.text}`;\n }\n\n if (step.effectiveKeyword === 'When') {\n return `Perform this user action: ${step.text}`;\n }\n\n return `Verify that ${step.text}`;\n};\n\nconst describeStepExecution = (\n step: ParsedGherkinStep,\n action: RunGherkinScenarioStepAction,\n) => {\n const keywordMapping =\n step.keyword === step.effectiveKeyword\n ? step.keyword\n : `${step.keyword} as ${step.effectiveKeyword}`;\n\n if (step.effectiveKeyword === 'Given') {\n return `setting up the precondition (${keywordMapping} -> ${action})`;\n }\n\n if (step.effectiveKeyword === 'When') {\n return `performing the user action (${keywordMapping} -> ${action})`;\n }\n\n return `verifying the expected result (${keywordMapping} -> ${action})`;\n};\n\nconst describeErrorCause = (error: unknown) => {\n if (error instanceof Error && error.message) {\n return ` Original error: ${error.message}`;\n }\n\n return '';\n};\n\nexport const runGherkinScenario = async (\n agent: GherkinScenarioAgent,\n scenarioText: string,\n opt?: RunGherkinScenarioOptions,\n): Promise<void> => {\n const parsedScenario = parseGherkinScenario(scenarioText);\n const aiActOptions: AiActOptions = {\n ...opt,\n cacheable: false,\n };\n\n for (const step of parsedScenario.steps) {\n throwIfAborted(opt?.abortSignal);\n\n const action: RunGherkinScenarioStepAction =\n step.effectiveKeyword === 'Then' ? 'aiAssert' : 'aiAct';\n const prompt = buildStepPrompt(step);\n\n try {\n if (action === 'aiAct') {\n await agent.aiAct(prompt, aiActOptions);\n } else if (opt?.context || opt?.abortSignal) {\n await agent.aiAssert(prompt, undefined, {\n context: opt.context,\n abortSignal: opt.abortSignal,\n });\n } else {\n await agent.aiAssert(prompt);\n }\n } catch (error) {\n throw new Error(\n `runGherkinScenario failed while ${describeStepExecution(\n step,\n action,\n )} at line ${step.lineNumber}: ${step.keyword} ${step.text}.${describeErrorCause(\n error,\n )}`,\n {\n cause: error,\n },\n );\n }\n }\n};\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","stepKeywordPattern","headerPattern","unsupportedHeaderPattern","normalizeStepKeyword","keyword","lowerKeyword","isPrimaryKeyword","resolveSteps","steps","previousPrimaryKeyword","step","effectiveKeyword","Error","throwIfAborted","abortSignal","parseGherkinScenario","scenarioText","lines","scenarioSteps","anonymousSteps","scenario","scenarioCount","section","lineIndex","rawLine","lineNumber","line","headerMatch","undefined","stepMatch","rawSteps","buildStepPrompt","describeStepExecution","action","keywordMapping","describeErrorCause","error","runGherkinScenario","agent","opt","parsedScenario","aiActOptions","prompt"],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
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
|
+
markdownToAiActPrompt: ()=>markdownToAiActPrompt
|
|
28
|
+
});
|
|
29
|
+
const external_node_path_namespaceObject = require("node:path");
|
|
30
|
+
const MAX_MARKDOWN_IMAGES = 20;
|
|
31
|
+
const REFERENCE_IMAGE_PREFIX = '参考图片';
|
|
32
|
+
const imageNameForIndex = (index)=>`${REFERENCE_IMAGE_PREFIX}-${String(index + 1).padStart(3, '0')}`;
|
|
33
|
+
const formatSource = (sourcePath)=>sourcePath ? ` in ${sourcePath}` : '';
|
|
34
|
+
const hasUrlScheme = (url)=>/^[a-zA-Z][a-zA-Z\d+.-]*:/.test(url);
|
|
35
|
+
const resolveMarkdownImageUrl = (url, sourcePath)=>{
|
|
36
|
+
if (!sourcePath || hasUrlScheme(url) || (0, external_node_path_namespaceObject.isAbsolute)(url)) return url;
|
|
37
|
+
return (0, external_node_path_namespaceObject.resolve)((0, external_node_path_namespaceObject.dirname)(sourcePath), url);
|
|
38
|
+
};
|
|
39
|
+
const replaceMarkdownImages = (tree, sourcePath)=>{
|
|
40
|
+
const images = [];
|
|
41
|
+
const visitChildren = (node)=>{
|
|
42
|
+
if (!Array.isArray(node.children)) return;
|
|
43
|
+
node.children = node.children.map((child)=>{
|
|
44
|
+
if ('imageReference' === child.type) {
|
|
45
|
+
const identifier = child.identifier || child.label || 'unknown';
|
|
46
|
+
throw new Error(`runMarkdown does not support reference-style image "${identifier}"${formatSource(sourcePath)}. Use direct image syntax instead.`);
|
|
47
|
+
}
|
|
48
|
+
if ('image' === child.type) {
|
|
49
|
+
const name = imageNameForIndex(images.length);
|
|
50
|
+
if (!child.url) throw new Error(`Markdown image ${name}${formatSource(sourcePath)} is missing a URL.`);
|
|
51
|
+
images.push({
|
|
52
|
+
name,
|
|
53
|
+
url: resolveMarkdownImageUrl(child.url, sourcePath)
|
|
54
|
+
});
|
|
55
|
+
if (images.length > MAX_MARKDOWN_IMAGES) throw new Error(`runMarkdown supports at most ${MAX_MARKDOWN_IMAGES} images, but found ${images.length} images${formatSource(sourcePath)}.`);
|
|
56
|
+
return {
|
|
57
|
+
type: 'text',
|
|
58
|
+
value: name
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
visitChildren(child);
|
|
62
|
+
return child;
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
visitChildren(tree);
|
|
66
|
+
return images;
|
|
67
|
+
};
|
|
68
|
+
const markdownToAiActPrompt = async (markdown, sourcePath)=>{
|
|
69
|
+
const fromMarkdownModuleName = 'mdast-util-from-markdown';
|
|
70
|
+
const toMarkdownModuleName = 'mdast-util-to-markdown';
|
|
71
|
+
const { fromMarkdown } = await import(fromMarkdownModuleName);
|
|
72
|
+
const { toMarkdown } = await import(toMarkdownModuleName);
|
|
73
|
+
const tree = fromMarkdown(markdown);
|
|
74
|
+
const images = replaceMarkdownImages(tree, sourcePath);
|
|
75
|
+
if (0 === images.length) return {
|
|
76
|
+
prompt: markdown,
|
|
77
|
+
imageCount: 0
|
|
78
|
+
};
|
|
79
|
+
return {
|
|
80
|
+
prompt: {
|
|
81
|
+
prompt: toMarkdown(tree),
|
|
82
|
+
images,
|
|
83
|
+
convertHttpImage2Base64: true
|
|
84
|
+
},
|
|
85
|
+
imageCount: images.length
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
exports.markdownToAiActPrompt = __webpack_exports__.markdownToAiActPrompt;
|
|
89
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
90
|
+
"markdownToAiActPrompt"
|
|
91
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
92
|
+
Object.defineProperty(exports, '__esModule', {
|
|
93
|
+
value: true
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
//# sourceMappingURL=run-markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent/run-markdown.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/agent/run-markdown.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 { dirname, isAbsolute, resolve } from 'node:path';\nimport type { TUserPrompt } from '@/common';\n\nconst MAX_MARKDOWN_IMAGES = 20;\nconst REFERENCE_IMAGE_PREFIX = '参考图片';\n\ntype MdastNode = {\n type: string;\n children?: MdastNode[];\n url?: string;\n identifier?: string;\n label?: string;\n};\n\ntype MdastRoot = MdastNode & {\n children: MdastNode[];\n};\n\ntype MdastFromMarkdownModule = {\n fromMarkdown: (value: string) => MdastRoot;\n};\n\ntype MdastToMarkdownModule = {\n toMarkdown: (tree: MdastRoot) => string;\n};\n\nexport type RunMarkdownTransformResult = {\n prompt: TUserPrompt;\n imageCount: number;\n};\n\nconst imageNameForIndex = (index: number) =>\n `${REFERENCE_IMAGE_PREFIX}-${String(index + 1).padStart(3, '0')}`;\n\nconst formatSource = (sourcePath?: string) =>\n sourcePath ? ` in ${sourcePath}` : '';\n\nconst hasUrlScheme = (url: string) => /^[a-zA-Z][a-zA-Z\\d+.-]*:/.test(url);\n\nconst resolveMarkdownImageUrl = (url: string, sourcePath?: string) => {\n if (!sourcePath || hasUrlScheme(url) || isAbsolute(url)) {\n return url;\n }\n return resolve(dirname(sourcePath), url);\n};\n\nconst replaceMarkdownImages = (tree: MdastRoot, sourcePath?: string) => {\n const images: Array<{ name: string; url: string }> = [];\n\n const visitChildren = (node: MdastNode) => {\n if (!Array.isArray(node.children)) {\n return;\n }\n\n node.children = node.children.map((child) => {\n if (child.type === 'imageReference') {\n const identifier = child.identifier || child.label || 'unknown';\n throw new Error(\n `runMarkdown does not support reference-style image \"${identifier}\"${formatSource(sourcePath)}. Use direct image syntax instead.`,\n );\n }\n\n if (child.type === 'image') {\n const name = imageNameForIndex(images.length);\n if (!child.url) {\n throw new Error(\n `Markdown image ${name}${formatSource(sourcePath)} is missing a URL.`,\n );\n }\n\n images.push({\n name,\n url: resolveMarkdownImageUrl(child.url, sourcePath),\n });\n if (images.length > MAX_MARKDOWN_IMAGES) {\n throw new Error(\n `runMarkdown supports at most ${MAX_MARKDOWN_IMAGES} images, but found ${images.length} images${formatSource(sourcePath)}.`,\n );\n }\n\n return {\n type: 'text',\n value: name,\n } as MdastNode;\n }\n\n visitChildren(child);\n return child;\n });\n };\n\n visitChildren(tree);\n return images;\n};\n\nexport const markdownToAiActPrompt = async (\n markdown: string,\n sourcePath?: string,\n): Promise<RunMarkdownTransformResult> => {\n const fromMarkdownModuleName = 'mdast-util-from-markdown';\n const toMarkdownModuleName = 'mdast-util-to-markdown';\n const { fromMarkdown } = (await import(\n fromMarkdownModuleName\n )) as MdastFromMarkdownModule;\n const { toMarkdown } = (await import(\n toMarkdownModuleName\n )) as MdastToMarkdownModule;\n\n const tree = fromMarkdown(markdown);\n const images = replaceMarkdownImages(tree, sourcePath);\n\n if (images.length === 0) {\n return {\n prompt: markdown,\n imageCount: 0,\n };\n }\n\n return {\n prompt: {\n prompt: toMarkdown(tree),\n images,\n convertHttpImage2Base64: true,\n },\n imageCount: images.length,\n };\n};\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","MAX_MARKDOWN_IMAGES","REFERENCE_IMAGE_PREFIX","imageNameForIndex","index","String","formatSource","sourcePath","hasUrlScheme","url","resolveMarkdownImageUrl","isAbsolute","resolve","dirname","replaceMarkdownImages","tree","images","visitChildren","node","Array","child","identifier","Error","name","markdownToAiActPrompt","markdown","fromMarkdownModuleName","toMarkdownModuleName","fromMarkdown","toMarkdown"],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
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
|
+
prepareRawScreenshot: ()=>prepareRawScreenshot,
|
|
28
|
+
prepareScreenshotForPersistence: ()=>prepareScreenshotForPersistence
|
|
29
|
+
});
|
|
30
|
+
const img_namespaceObject = require("@aiscene/shared/img");
|
|
31
|
+
const SCREENSHOT_JPEG_QUALITY = 90;
|
|
32
|
+
function assertValidSize(size, label) {
|
|
33
|
+
if (!Number.isFinite(size.width) || !Number.isFinite(size.height)) throw new Error(`Invalid ${label}: width and height must be finite numbers. Received width: ${size.width}, height: ${size.height}`);
|
|
34
|
+
if (size.width <= 0 || size.height <= 0) throw new Error(`Invalid ${label}: width and height must be positive numbers. Received width: ${size.width}, height: ${size.height}`);
|
|
35
|
+
}
|
|
36
|
+
async function prepareRawScreenshot(screenshotBase64, options) {
|
|
37
|
+
const shrinkFactor = options?.shrinkFactor ?? 1;
|
|
38
|
+
if (!Number.isFinite(shrinkFactor) || shrinkFactor < 1) throw new Error(`Invalid screenshotShrinkFactor: must be a finite number >= 1. Received: ${shrinkFactor}`);
|
|
39
|
+
const originalSize = await (0, img_namespaceObject.imageInfoOfBase64)(screenshotBase64);
|
|
40
|
+
assertValidSize(originalSize, 'screenshot dimensions');
|
|
41
|
+
const shotSize = shrinkFactor > 1 ? {
|
|
42
|
+
width: Math.round(originalSize.width / shrinkFactor),
|
|
43
|
+
height: Math.round(originalSize.height / shrinkFactor)
|
|
44
|
+
} : {
|
|
45
|
+
...originalSize
|
|
46
|
+
};
|
|
47
|
+
assertValidSize(shotSize, 'prepared screenshot dimensions');
|
|
48
|
+
const base64 = await (0, img_namespaceObject.resizeBase64ImageToJpeg)(screenshotBase64, {
|
|
49
|
+
sourceSize: originalSize,
|
|
50
|
+
targetSize: shotSize,
|
|
51
|
+
jpegQuality: SCREENSHOT_JPEG_QUALITY
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
base64,
|
|
55
|
+
originalSize,
|
|
56
|
+
shotSize
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
async function prepareScreenshotForPersistence(screenshotBase64, options) {
|
|
60
|
+
const shrinkFactor = options?.shrinkFactor ?? 1;
|
|
61
|
+
if (1 === shrinkFactor) return (0, img_namespaceObject.convertBase64ImageToJpeg)(screenshotBase64, SCREENSHOT_JPEG_QUALITY);
|
|
62
|
+
return (await prepareRawScreenshot(screenshotBase64, options)).base64;
|
|
63
|
+
}
|
|
64
|
+
exports.prepareRawScreenshot = __webpack_exports__.prepareRawScreenshot;
|
|
65
|
+
exports.prepareScreenshotForPersistence = __webpack_exports__.prepareScreenshotForPersistence;
|
|
66
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
67
|
+
"prepareRawScreenshot",
|
|
68
|
+
"prepareScreenshotForPersistence"
|
|
69
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
70
|
+
Object.defineProperty(exports, '__esModule', {
|
|
71
|
+
value: true
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=screenshot-preparation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent/screenshot-preparation.js","sources":["webpack/runtime/define_property_getters","webpack/runtime/has_own_property","webpack/runtime/make_namespace_object","../../../src/agent/screenshot-preparation.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 {\n type JpegBase64DataUrl,\n convertBase64ImageToJpeg,\n imageInfoOfBase64,\n resizeBase64ImageToJpeg,\n} from '@aiscene/shared/img';\nimport type { Size } from '../types';\n\nconst SCREENSHOT_JPEG_QUALITY = 90;\n\nexport interface PrepareRawScreenshotOptions {\n shrinkFactor?: number;\n}\n\nexport interface PreparedScreenshot {\n base64: JpegBase64DataUrl;\n originalSize: Size;\n shotSize: Size;\n}\n\nfunction assertValidSize(size: Size, label: string): void {\n if (!Number.isFinite(size.width) || !Number.isFinite(size.height)) {\n throw new Error(\n `Invalid ${label}: width and height must be finite numbers. Received width: ${size.width}, height: ${size.height}`,\n );\n }\n if (size.width <= 0 || size.height <= 0) {\n throw new Error(\n `Invalid ${label}: width and height must be positive numbers. Received width: ${size.width}, height: ${size.height}`,\n );\n }\n}\n\n/**\n * Prepare one raw screenshot for model context or observation persistence.\n * Each raw screenshot must pass through this pipeline at most once.\n */\nexport async function prepareRawScreenshot(\n screenshotBase64: string,\n options?: PrepareRawScreenshotOptions,\n): Promise<PreparedScreenshot> {\n const shrinkFactor = options?.shrinkFactor ?? 1;\n if (!Number.isFinite(shrinkFactor) || shrinkFactor < 1) {\n throw new Error(\n `Invalid screenshotShrinkFactor: must be a finite number >= 1. Received: ${shrinkFactor}`,\n );\n }\n\n const originalSize = await imageInfoOfBase64(screenshotBase64);\n assertValidSize(originalSize, 'screenshot dimensions');\n\n const shotSize =\n shrinkFactor > 1\n ? {\n width: Math.round(originalSize.width / shrinkFactor),\n height: Math.round(originalSize.height / shrinkFactor),\n }\n : { ...originalSize };\n assertValidSize(shotSize, 'prepared screenshot dimensions');\n\n const base64 = await resizeBase64ImageToJpeg(screenshotBase64, {\n sourceSize: originalSize,\n targetSize: shotSize,\n jpegQuality: SCREENSHOT_JPEG_QUALITY,\n });\n\n return {\n base64,\n originalSize,\n shotSize,\n };\n}\n\n/**\n * Prepare a screenshot for persistence when only JPEG output is required.\n * Unscaled frames avoid dimension reads; scaled frames use the full pipeline.\n */\nexport async function prepareScreenshotForPersistence(\n screenshotBase64: string,\n options?: PrepareRawScreenshotOptions,\n): Promise<JpegBase64DataUrl> {\n const shrinkFactor = options?.shrinkFactor ?? 1;\n if (shrinkFactor === 1) {\n return convertBase64ImageToJpeg(screenshotBase64, SCREENSHOT_JPEG_QUALITY);\n }\n return (await prepareRawScreenshot(screenshotBase64, options)).base64;\n}\n"],"names":["__webpack_require__","definition","key","Object","obj","prop","Symbol","SCREENSHOT_JPEG_QUALITY","assertValidSize","size","label","Number","Error","prepareRawScreenshot","screenshotBase64","options","shrinkFactor","originalSize","imageInfoOfBase64","shotSize","Math","base64","resizeBase64ImageToJpeg","prepareScreenshotForPersistence","convertBase64ImageToJpeg"],"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;;;;;;;;;ACEA,MAAMI,0BAA0B;AAYhC,SAASC,gBAAgBC,IAAU,EAAEC,KAAa;IAChD,IAAI,CAACC,OAAO,QAAQ,CAACF,KAAK,KAAK,KAAK,CAACE,OAAO,QAAQ,CAACF,KAAK,MAAM,GAC9D,MAAM,IAAIG,MACR,CAAC,QAAQ,EAAEF,MAAM,2DAA2D,EAAED,KAAK,KAAK,CAAC,UAAU,EAAEA,KAAK,MAAM,EAAE;IAGtH,IAAIA,KAAK,KAAK,IAAI,KAAKA,KAAK,MAAM,IAAI,GACpC,MAAM,IAAIG,MACR,CAAC,QAAQ,EAAEF,MAAM,6DAA6D,EAAED,KAAK,KAAK,CAAC,UAAU,EAAEA,KAAK,MAAM,EAAE;AAG1H;AAMO,eAAeI,qBACpBC,gBAAwB,EACxBC,OAAqC;IAErC,MAAMC,eAAeD,SAAS,gBAAgB;IAC9C,IAAI,CAACJ,OAAO,QAAQ,CAACK,iBAAiBA,eAAe,GACnD,MAAM,IAAIJ,MACR,CAAC,wEAAwE,EAAEI,cAAc;IAI7F,MAAMC,eAAe,MAAMC,AAAAA,IAAAA,oBAAAA,iBAAAA,AAAAA,EAAkBJ;IAC7CN,gBAAgBS,cAAc;IAE9B,MAAME,WACJH,eAAe,IACX;QACE,OAAOI,KAAK,KAAK,CAACH,aAAa,KAAK,GAAGD;QACvC,QAAQI,KAAK,KAAK,CAACH,aAAa,MAAM,GAAGD;IAC3C,IACA;QAAE,GAAGC,YAAY;IAAC;IACxBT,gBAAgBW,UAAU;IAE1B,MAAME,SAAS,MAAMC,AAAAA,IAAAA,oBAAAA,uBAAAA,AAAAA,EAAwBR,kBAAkB;QAC7D,YAAYG;QACZ,YAAYE;QACZ,aAAaZ;IACf;IAEA,OAAO;QACLc;QACAJ;QACAE;IACF;AACF;AAMO,eAAeI,gCACpBT,gBAAwB,EACxBC,OAAqC;IAErC,MAAMC,eAAeD,SAAS,gBAAgB;IAC9C,IAAIC,AAAiB,MAAjBA,cACF,OAAOQ,AAAAA,IAAAA,oBAAAA,wBAAAA,AAAAA,EAAyBV,kBAAkBP;IAEpD,OAAQ,OAAMM,qBAAqBC,kBAAkBC,QAAO,EAAG,MAAM;AACvE"}
|