autokap 1.0.6 → 1.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/assets/chrome/ios-statusbar-comparison-reference.jpg +0 -0
- package/assets/chrome/ios-statusbar-dark-reference.jpg +0 -0
- package/assets/chrome/ios-statusbar-light-reference.jpg +0 -0
- package/assets/cursors/macos.svg +4 -0
- package/assets/cursors/windows.svg +15 -0
- package/assets/devices/ipad-pro-11-m4.json +52 -0
- package/assets/devices/iphone-16-pro.json +53 -0
- package/assets/devices/macbook-air-13.json +45 -0
- package/assets/frames/MacBook Air 13.svg +242 -0
- package/assets/frames/Status bar - iPhone.png +0 -0
- Menu bar- iPad.png +0 -0
- package/assets/frames/iPad Pro M4 11_.png +0 -0
- package/assets/frames/iPhone 16 Pro.png +0 -0
- package/assets/icons/Cellular Connection.svg +3 -0
- package/assets/icons/Union.svg +6 -0
- package/assets/icons/Wifi.svg +3 -0
- package/assets/icons/battery.svg +5 -0
- package/assets/icons/battery_charging.svg +8 -0
- package/assets/skill/OPCODE-REFERENCE.md +607 -0
- package/assets/skill/README.md +39 -0
- package/assets/skill/SKILL.md +453 -468
- package/assets/skill/STUDIO-SKILL.md +476 -0
- package/assets/skill/references/examples.md +104 -0
- package/assets/skill/references/interactive-demo.md +225 -0
- package/assets/skill/references/mock-data.md +178 -0
- package/dist/abort.d.ts +5 -0
- package/dist/abort.js +44 -0
- package/dist/action-verifier.d.ts +29 -0
- package/dist/action-verifier.js +133 -0
- package/dist/agent-action-recovery.d.ts +45 -0
- package/dist/agent-action-recovery.js +370 -0
- package/dist/agent-message-utils.d.ts +21 -0
- package/dist/agent-message-utils.js +77 -0
- package/dist/agent-url-utils.d.ts +30 -0
- package/dist/agent-url-utils.js +138 -0
- package/dist/agent.d.ts +226 -0
- package/dist/agent.js +6666 -0
- package/dist/ak-tree.d.ts +39 -0
- package/dist/ak-tree.js +368 -0
- package/dist/alt-text.d.ts +26 -0
- package/dist/alt-text.js +55 -0
- package/dist/auth-capture.d.ts +17 -0
- package/dist/auth-capture.js +164 -0
- package/dist/benchmark.d.ts +59 -0
- package/dist/benchmark.js +135 -0
- package/dist/billing-operation-logging.d.ts +38 -0
- package/dist/billing-operation-logging.js +248 -0
- package/dist/browser-bar.d.ts +48 -0
- package/dist/browser-bar.js +284 -0
- package/dist/browser-pool.d.ts +7 -0
- package/dist/browser-pool.js +15 -5
- package/dist/browser-utils.d.ts +31 -0
- package/dist/browser-utils.js +97 -0
- package/dist/browser.d.ts +76 -1
- package/dist/browser.js +1657 -39
- package/dist/capture-alt-text.d.ts +12 -0
- package/dist/capture-alt-text.js +52 -0
- package/dist/capture-encryption.d.ts +10 -0
- package/dist/capture-encryption.js +41 -0
- package/dist/capture-language-preflight.d.ts +41 -0
- package/dist/capture-language-preflight.js +300 -0
- package/dist/capture-llm-page-identity.d.ts +15 -0
- package/dist/capture-llm-page-identity.js +128 -0
- package/dist/capture-model-resolution.d.ts +9 -0
- package/dist/capture-model-resolution.js +21 -0
- package/dist/capture-page-identity.d.ts +7 -0
- package/dist/capture-page-identity.js +352 -0
- package/dist/capture-preset-credentials.d.ts +62 -0
- package/dist/capture-preset-credentials.js +184 -0
- package/dist/capture-request-plan.d.ts +58 -0
- package/dist/capture-request-plan.js +264 -0
- package/dist/capture-run-optimizer.d.ts +139 -0
- package/dist/capture-run-optimizer.js +863 -0
- package/dist/capture-selector-memory.d.ts +31 -0
- package/dist/capture-selector-memory.js +345 -0
- package/dist/capture-session-profile-encryption.d.ts +2 -0
- package/dist/capture-session-profile-encryption.js +22 -0
- package/dist/capture-step-timeout.d.ts +10 -0
- package/dist/capture-step-timeout.js +30 -0
- package/dist/capture-strategy.d.ts +36 -0
- package/dist/capture-strategy.js +95 -0
- package/dist/capture-studio-sync.d.ts +23 -0
- package/dist/capture-studio-sync.js +172 -0
- package/dist/capture-surface-contract.d.ts +36 -0
- package/dist/capture-surface-contract.js +299 -0
- package/dist/capture-transition-engine.d.ts +28 -0
- package/dist/capture-transition-engine.js +292 -0
- package/dist/capture-variant-state.d.ts +56 -0
- package/dist/capture-variant-state.js +182 -0
- package/dist/capture-verification.d.ts +35 -0
- package/dist/capture-verification.js +95 -0
- package/dist/capture-viewport-lock.d.ts +48 -0
- package/dist/capture-viewport-lock.js +74 -0
- package/dist/circuit-breaker.d.ts +42 -0
- package/dist/circuit-breaker.js +119 -0
- package/dist/cli-config.d.ts +8 -1
- package/dist/cli-config.js +62 -6
- package/dist/cli-contract.d.ts +15 -0
- package/dist/cli-contract.js +167 -0
- package/dist/cli-runner-local.d.ts +12 -0
- package/dist/cli-runner-local.js +102 -0
- package/dist/cli-runner.d.ts +34 -0
- package/dist/cli-runner.js +433 -0
- package/dist/cli-utils.d.ts +0 -1
- package/dist/cli-utils.js +2 -5
- package/dist/cli.js +1005 -252
- package/dist/clip-orchestrator.d.ts +148 -0
- package/dist/clip-orchestrator.js +957 -0
- package/dist/clip-postprocess.d.ts +42 -0
- package/dist/clip-postprocess.js +201 -0
- package/dist/cookie-dismiss.d.ts +2 -0
- package/dist/cookie-dismiss.js +48 -13
- package/dist/cost-logging.d.ts +35 -0
- package/dist/cost-logging.js +242 -0
- package/dist/cost-resolution-monitor.d.ts +16 -0
- package/dist/cost-resolution-monitor.js +34 -0
- package/dist/credential-templates.d.ts +5 -0
- package/dist/credential-templates.js +60 -0
- package/dist/cursor-overlay-script.d.ts +6 -0
- package/dist/cursor-overlay-script.js +169 -0
- package/dist/dom-css-purger.d.ts +65 -0
- package/dist/dom-css-purger.js +333 -0
- package/dist/dom-font-inliner.d.ts +45 -0
- package/dist/dom-font-inliner.js +148 -0
- package/dist/dom-patch-resolver.d.ts +52 -0
- package/dist/dom-patch-resolver.js +242 -0
- package/dist/dom-serializer.d.ts +82 -0
- package/dist/dom-serializer.js +378 -0
- package/dist/element-capture.d.ts +13 -0
- package/dist/element-capture.js +522 -0
- package/dist/env-validation.d.ts +5 -0
- package/dist/env-validation.js +29 -0
- package/dist/execution-schema.d.ts +4423 -0
- package/dist/execution-schema.js +507 -0
- package/dist/execution-types.d.ts +886 -0
- package/dist/execution-types.js +65 -0
- package/dist/fonts-loader.d.ts +14 -0
- package/dist/fonts-loader.js +55 -0
- package/dist/hybrid-navigator.d.ts +138 -0
- package/dist/hybrid-navigator.js +468 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +17 -0
- package/dist/legacy/agent-action-recovery.d.ts +45 -0
- package/dist/legacy/agent-action-recovery.js +370 -0
- package/dist/legacy/agent-message-utils.d.ts +21 -0
- package/dist/legacy/agent-message-utils.js +77 -0
- package/dist/legacy/agent-url-utils.d.ts +30 -0
- package/dist/legacy/agent-url-utils.js +138 -0
- package/dist/legacy/agent.d.ts +226 -0
- package/dist/legacy/agent.js +6666 -0
- package/dist/legacy/clip-orchestrator.d.ts +148 -0
- package/dist/legacy/clip-orchestrator.js +957 -0
- package/dist/legacy/credential-templates.d.ts +5 -0
- package/dist/legacy/credential-templates.js +60 -0
- package/dist/legacy/hybrid-navigator.d.ts +138 -0
- package/dist/legacy/hybrid-navigator.js +468 -0
- package/dist/legacy/llm-usage.d.ts +17 -0
- package/dist/legacy/llm-usage.js +45 -0
- package/dist/legacy/prompt-cache.d.ts +10 -0
- package/dist/legacy/prompt-cache.js +24 -0
- package/dist/legacy/prompts.d.ts +175 -0
- package/dist/legacy/prompts.js +1038 -0
- package/dist/legacy/tools.d.ts +4 -0
- package/dist/legacy/tools.js +216 -0
- package/dist/legacy/video-agent.d.ts +143 -0
- package/dist/legacy/video-agent.js +4788 -0
- package/dist/legacy/video-observation.d.ts +36 -0
- package/dist/legacy/video-observation.js +192 -0
- package/dist/legacy/video-planner.d.ts +12 -0
- package/dist/legacy/video-planner.js +501 -0
- package/dist/legacy/video-prompts.d.ts +37 -0
- package/dist/legacy/video-prompts.js +569 -0
- package/dist/legacy/video-tools.d.ts +3 -0
- package/dist/legacy/video-tools.js +59 -0
- package/dist/legacy/video-variant-state.d.ts +29 -0
- package/dist/legacy/video-variant-state.js +80 -0
- package/dist/legacy/vision-model.d.ts +17 -0
- package/dist/legacy/vision-model.js +74 -0
- package/dist/llm-healer.d.ts +63 -0
- package/dist/llm-healer.js +166 -0
- package/dist/llm-provider.d.ts +29 -0
- package/dist/llm-provider.js +80 -0
- package/dist/llm-usage.d.ts +17 -0
- package/dist/llm-usage.js +45 -0
- package/dist/logger.d.ts +6 -2
- package/dist/logger.js +15 -1
- package/dist/mockup-html.d.ts +119 -0
- package/dist/mockup-html.js +263 -0
- package/dist/mockup.d.ts +187 -0
- package/dist/mockup.js +869 -0
- package/dist/mouse-animation.d.ts +46 -0
- package/dist/mouse-animation.js +114 -0
- package/dist/opcode-actions.d.ts +42 -0
- package/dist/opcode-actions.js +511 -0
- package/dist/opcode-runner.d.ts +51 -0
- package/dist/opcode-runner.js +770 -0
- package/dist/openrouter-client.d.ts +40 -0
- package/dist/openrouter-client.js +16 -0
- package/dist/overlay-engine.d.ts +24 -0
- package/dist/overlay-engine.js +176 -0
- package/dist/overlay-utils.d.ts +14 -0
- package/dist/overlay-utils.js +13 -0
- package/dist/postcondition.d.ts +16 -0
- package/dist/postcondition.js +269 -0
- package/dist/posthog.d.ts +4 -0
- package/dist/posthog.js +26 -0
- package/dist/program-patcher.d.ts +25 -0
- package/dist/program-patcher.js +44 -0
- package/dist/prompt-cache.d.ts +10 -0
- package/dist/prompt-cache.js +24 -0
- package/dist/prompts.d.ts +175 -0
- package/dist/prompts.js +1038 -0
- package/dist/provider-config.d.ts +12 -0
- package/dist/provider-config.js +15 -0
- package/dist/recovery-chain.d.ts +37 -0
- package/dist/recovery-chain.js +350 -0
- package/dist/remote-browser.d.ts +215 -0
- package/dist/remote-browser.js +360 -0
- package/dist/safari-browser-bar.d.ts +15 -0
- package/dist/safari-browser-bar.js +95 -0
- package/dist/safari-toolbar-asset.d.ts +15 -0
- package/dist/safari-toolbar-asset.js +12 -0
- package/dist/security.d.ts +21 -0
- package/dist/security.js +608 -0
- package/dist/selector-resolver.d.ts +34 -0
- package/dist/selector-resolver.js +181 -0
- package/dist/semantic-resolver.d.ts +35 -0
- package/dist/semantic-resolver.js +161 -0
- package/dist/server-capture-runtime.d.ts +125 -0
- package/dist/server-capture-runtime.js +585 -0
- package/dist/server-credit-usage.d.ts +12 -0
- package/dist/server-credit-usage.js +41 -0
- package/dist/server-posthog.d.ts +2 -0
- package/dist/server-posthog.js +16 -0
- package/dist/server-project-webhooks.d.ts +59 -0
- package/dist/server-project-webhooks.js +123 -0
- package/dist/server-screenshot-watermark.d.ts +7 -0
- package/dist/server-screenshot-watermark.js +60 -0
- package/dist/session-profile.d.ts +86 -0
- package/dist/session-profile.js +1536 -0
- package/dist/sf-pro-fonts.d.ts +4 -0
- package/dist/sf-pro-fonts.js +7 -0
- package/dist/sf-pro-symbols.d.ts +1 -0
- package/dist/sf-pro-symbols.js +55 -0
- package/dist/skill-packaging.d.ts +28 -0
- package/dist/skill-packaging.js +169 -0
- package/dist/smart-wait.d.ts +27 -0
- package/dist/smart-wait.js +81 -0
- package/dist/status-bar-l10n.d.ts +14 -0
- package/dist/status-bar-l10n.js +177 -0
- package/dist/status-bar-render.d.ts +20 -0
- package/dist/status-bar-render.js +410 -0
- package/dist/status-bar.d.ts +53 -0
- package/dist/status-bar.js +620 -0
- package/dist/svg-browser-bar.d.ts +33 -0
- package/dist/svg-browser-bar.js +206 -0
- package/dist/svg-status-bar.d.ts +36 -0
- package/dist/svg-status-bar.js +597 -0
- package/dist/svg-text.d.ts +61 -0
- package/dist/svg-text.js +118 -0
- package/dist/tools.d.ts +4 -0
- package/dist/tools.js +216 -0
- package/dist/types.d.ts +240 -5
- package/dist/types.js +23 -1
- package/dist/v2/action-verifier.d.ts +29 -0
- package/dist/v2/action-verifier.js +133 -0
- package/dist/v2/alt-text.d.ts +26 -0
- package/dist/v2/alt-text.js +55 -0
- package/dist/v2/benchmark.d.ts +59 -0
- package/dist/v2/benchmark.js +135 -0
- package/dist/v2/capture-strategy.d.ts +30 -0
- package/dist/v2/capture-strategy.js +67 -0
- package/dist/v2/capture-verification.d.ts +35 -0
- package/dist/v2/capture-verification.js +95 -0
- package/dist/v2/circuit-breaker.d.ts +42 -0
- package/dist/v2/circuit-breaker.js +119 -0
- package/dist/v2/cli-runner-local.d.ts +11 -0
- package/dist/v2/cli-runner-local.js +91 -0
- package/dist/v2/cli-runner.d.ts +34 -0
- package/dist/v2/cli-runner.js +300 -0
- package/dist/v2/compiler-prompts.d.ts +27 -0
- package/dist/v2/compiler-prompts.js +123 -0
- package/dist/v2/compiler.d.ts +37 -0
- package/dist/v2/compiler.js +147 -0
- package/dist/v2/explorer.d.ts +41 -0
- package/dist/v2/explorer.js +56 -0
- package/dist/v2/index.d.ts +37 -0
- package/dist/v2/index.js +31 -0
- package/dist/v2/llm-healer.d.ts +62 -0
- package/dist/v2/llm-healer.js +166 -0
- package/dist/v2/llm-provider.d.ts +29 -0
- package/dist/v2/llm-provider.js +80 -0
- package/dist/v2/opcode-runner.d.ts +47 -0
- package/dist/v2/opcode-runner.js +634 -0
- package/dist/v2/overlay-engine.d.ts +24 -0
- package/dist/v2/overlay-engine.js +150 -0
- package/dist/v2/postcondition.d.ts +16 -0
- package/dist/v2/postcondition.js +249 -0
- package/dist/v2/program-patcher.d.ts +25 -0
- package/dist/v2/program-patcher.js +44 -0
- package/dist/v2/recovery-chain.d.ts +30 -0
- package/dist/v2/recovery-chain.js +368 -0
- package/dist/v2/schema.d.ts +2580 -0
- package/dist/v2/schema.js +295 -0
- package/dist/v2/selector-resolver.d.ts +34 -0
- package/dist/v2/selector-resolver.js +181 -0
- package/dist/v2/semantic-resolver.d.ts +35 -0
- package/dist/v2/semantic-resolver.js +161 -0
- package/dist/v2/smart-wait.d.ts +27 -0
- package/dist/v2/smart-wait.js +81 -0
- package/dist/v2/types.d.ts +444 -0
- package/dist/v2/types.js +19 -0
- package/dist/v2/web-playwright-local.d.ts +69 -0
- package/dist/v2/web-playwright-local.js +392 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +5 -0
- package/dist/video-agent.d.ts +143 -0
- package/dist/video-agent.js +4788 -0
- package/dist/video-observation.d.ts +36 -0
- package/dist/video-observation.js +192 -0
- package/dist/video-planner.d.ts +12 -0
- package/dist/video-planner.js +501 -0
- package/dist/video-prompts.d.ts +37 -0
- package/dist/video-prompts.js +554 -0
- package/dist/video-tools.d.ts +3 -0
- package/dist/video-tools.js +59 -0
- package/dist/video-variant-state.d.ts +29 -0
- package/dist/video-variant-state.js +80 -0
- package/dist/vision-model.d.ts +17 -0
- package/dist/vision-model.js +74 -0
- package/dist/web-playwright-local.d.ts +126 -0
- package/dist/web-playwright-local.js +819 -0
- package/dist/ws-auth.d.ts +20 -0
- package/dist/ws-auth.js +70 -0
- package/dist/ws-broadcast.d.ts +34 -0
- package/dist/ws-broadcast.js +85 -0
- package/dist/ws-connection-limits.d.ts +12 -0
- package/dist/ws-connection-limits.js +44 -0
- package/dist/ws-handler-utils.d.ts +32 -0
- package/dist/ws-handler-utils.js +139 -0
- package/dist/ws-handler.d.ts +10 -0
- package/dist/ws-handler.js +1793 -0
- package/dist/ws-metrics-server.d.ts +9 -0
- package/dist/ws-metrics-server.js +31 -0
- package/dist/ws-server.d.ts +9 -0
- package/dist/ws-server.js +92 -0
- package/package.json +142 -71
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { evaluateRequestedLanguageState, evaluateRequestedThemeState as evaluateRequestedThemeStateRich, } from './session-profile.js';
|
|
2
|
+
function normalizeConfidenceScore(confidence) {
|
|
3
|
+
switch (confidence) {
|
|
4
|
+
case 'high':
|
|
5
|
+
return 1;
|
|
6
|
+
case 'medium':
|
|
7
|
+
return 0.78;
|
|
8
|
+
case 'low':
|
|
9
|
+
default:
|
|
10
|
+
return 0.58;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function scoreLocaleSignals(signals, requestedLang) {
|
|
14
|
+
if (!requestedLang)
|
|
15
|
+
return { score: 1, reasons: [], ambiguous: false };
|
|
16
|
+
const languageState = evaluateRequestedLanguageState({
|
|
17
|
+
currentUrl: signals.url,
|
|
18
|
+
requestedLang,
|
|
19
|
+
signals,
|
|
20
|
+
});
|
|
21
|
+
if (languageState.active) {
|
|
22
|
+
return {
|
|
23
|
+
score: normalizeConfidenceScore(languageState.confidence),
|
|
24
|
+
reasons: languageState.reasons,
|
|
25
|
+
ambiguous: false,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
if (languageState.ambiguous) {
|
|
29
|
+
return {
|
|
30
|
+
score: languageState.confidence === 'high' ? 0.45 : languageState.confidence === 'medium' ? 0.32 : 0.18,
|
|
31
|
+
reasons: languageState.reasons,
|
|
32
|
+
ambiguous: true,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
score: 0,
|
|
37
|
+
reasons: languageState.reasons,
|
|
38
|
+
ambiguous: false,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export function evaluateRequestedThemeState(signals, requestedTheme) {
|
|
42
|
+
const themeState = evaluateRequestedThemeStateRich({
|
|
43
|
+
requestedTheme,
|
|
44
|
+
signals,
|
|
45
|
+
});
|
|
46
|
+
return {
|
|
47
|
+
detected: themeState.detected,
|
|
48
|
+
active: themeState.active,
|
|
49
|
+
ambiguous: themeState.ambiguous,
|
|
50
|
+
reason: themeState.reasons.join('; ') || 'no_theme_signal',
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export async function detectVariantStateDeterministic(browser, requestedLang, requestedTheme) {
|
|
54
|
+
const signals = await browser.capturePageSignals();
|
|
55
|
+
const languageState = evaluateRequestedLanguageState({
|
|
56
|
+
currentUrl: signals.url,
|
|
57
|
+
requestedLang,
|
|
58
|
+
signals,
|
|
59
|
+
});
|
|
60
|
+
const themeState = evaluateRequestedThemeStateRich({
|
|
61
|
+
requestedTheme,
|
|
62
|
+
signals,
|
|
63
|
+
});
|
|
64
|
+
return {
|
|
65
|
+
lang: {
|
|
66
|
+
requested: requestedLang,
|
|
67
|
+
detected: languageState.detected,
|
|
68
|
+
active: requestedLang ? languageState.active : true,
|
|
69
|
+
ambiguous: requestedLang ? languageState.ambiguous : false,
|
|
70
|
+
},
|
|
71
|
+
theme: {
|
|
72
|
+
requested: requestedTheme,
|
|
73
|
+
detected: themeState.detected,
|
|
74
|
+
active: requestedTheme ? themeState.active : true,
|
|
75
|
+
ambiguous: requestedTheme ? themeState.ambiguous : false,
|
|
76
|
+
},
|
|
77
|
+
pageSignals: signals,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=video-variant-state.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class VisionModelUnsupportedError extends Error {
|
|
2
|
+
requestedModel: string;
|
|
3
|
+
fallbackModel?: string;
|
|
4
|
+
constructor(requestedModel: string, fallbackModel?: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function isImageInputUnsupportedError(err: unknown): boolean;
|
|
7
|
+
export declare function buildVisionModelUnavailableMessage(requestedModel: string, fallbackModel?: string): string;
|
|
8
|
+
export declare function callVisionCapableModel<T>(params: {
|
|
9
|
+
primaryModel: string;
|
|
10
|
+
fallbackModel?: string;
|
|
11
|
+
callModel: (model: string) => Promise<T>;
|
|
12
|
+
onFallbackActivated?: (model: string, reason: string) => void;
|
|
13
|
+
}): Promise<{
|
|
14
|
+
result: T;
|
|
15
|
+
model: string;
|
|
16
|
+
fellBack: boolean;
|
|
17
|
+
}>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export class VisionModelUnsupportedError extends Error {
|
|
2
|
+
requestedModel;
|
|
3
|
+
fallbackModel;
|
|
4
|
+
constructor(requestedModel, fallbackModel) {
|
|
5
|
+
super(buildVisionModelUnavailableMessage(requestedModel, fallbackModel));
|
|
6
|
+
this.name = 'VisionModelUnsupportedError';
|
|
7
|
+
this.requestedModel = requestedModel;
|
|
8
|
+
this.fallbackModel = fallbackModel;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
function extractNestedErrorMessage(err) {
|
|
12
|
+
if (!err || typeof err !== 'object')
|
|
13
|
+
return '';
|
|
14
|
+
const errorRecord = err;
|
|
15
|
+
const directMessage = typeof errorRecord.message === 'string' ? errorRecord.message : '';
|
|
16
|
+
const nestedError = errorRecord.error;
|
|
17
|
+
const nestedMessage = nestedError && typeof nestedError === 'object' && typeof nestedError.message === 'string'
|
|
18
|
+
? nestedError.message
|
|
19
|
+
: '';
|
|
20
|
+
if (nestedMessage && nestedMessage === directMessage)
|
|
21
|
+
return directMessage;
|
|
22
|
+
return [directMessage, nestedMessage].filter(Boolean).join(' ');
|
|
23
|
+
}
|
|
24
|
+
export function isImageInputUnsupportedError(err) {
|
|
25
|
+
if (!err || typeof err !== 'object')
|
|
26
|
+
return false;
|
|
27
|
+
const errorRecord = err;
|
|
28
|
+
const status = typeof errorRecord.status === 'number' ? errorRecord.status : undefined;
|
|
29
|
+
const message = extractNestedErrorMessage(err).toLowerCase();
|
|
30
|
+
if (!message)
|
|
31
|
+
return false;
|
|
32
|
+
const mentionsImageEndpoint = message.includes('no endpoints found that support image input')
|
|
33
|
+
|| message.includes('no providers that support image input')
|
|
34
|
+
|| (message.includes('image input') && message.includes('no') && message.includes('support'))
|
|
35
|
+
|| (message.includes('image input') && message.includes('endpoint') && message.includes('no'));
|
|
36
|
+
if (!mentionsImageEndpoint)
|
|
37
|
+
return false;
|
|
38
|
+
return status === undefined || status === 400 || status === 404 || status === 422;
|
|
39
|
+
}
|
|
40
|
+
export function buildVisionModelUnavailableMessage(requestedModel, fallbackModel) {
|
|
41
|
+
const fallbackHint = fallbackModel && fallbackModel !== requestedModel
|
|
42
|
+
? ` Automatic fallback to "${fallbackModel}" also failed or was unavailable.`
|
|
43
|
+
: '';
|
|
44
|
+
return `The model "${requestedModel}" has no available endpoint that supports image input.${fallbackHint} Configure a vision-capable default/fallback model or retry later if the provider is degraded.`;
|
|
45
|
+
}
|
|
46
|
+
export async function callVisionCapableModel(params) {
|
|
47
|
+
const { primaryModel, fallbackModel, callModel, onFallbackActivated } = params;
|
|
48
|
+
let fallbackReason = '';
|
|
49
|
+
try {
|
|
50
|
+
const result = await callModel(primaryModel);
|
|
51
|
+
return { result, model: primaryModel, fellBack: false };
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
if (!isImageInputUnsupportedError(err)) {
|
|
55
|
+
throw err;
|
|
56
|
+
}
|
|
57
|
+
fallbackReason = extractNestedErrorMessage(err) || 'image input unsupported';
|
|
58
|
+
if (!fallbackModel || fallbackModel === primaryModel) {
|
|
59
|
+
throw new VisionModelUnsupportedError(primaryModel, fallbackModel);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
const result = await callModel(fallbackModel);
|
|
64
|
+
onFallbackActivated?.(fallbackModel, fallbackReason);
|
|
65
|
+
return { result, model: fallbackModel, fellBack: true };
|
|
66
|
+
}
|
|
67
|
+
catch (fallbackErr) {
|
|
68
|
+
if (isImageInputUnsupportedError(fallbackErr)) {
|
|
69
|
+
throw new VisionModelUnsupportedError(primaryModel, fallbackModel);
|
|
70
|
+
}
|
|
71
|
+
throw fallbackErr;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=vision-model.js.map
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capture Agent — WebPlaywrightLocal RuntimeAdapter
|
|
3
|
+
*
|
|
4
|
+
* Thin adapter delegating to the existing Browser class from src/browser.ts.
|
|
5
|
+
* This is the first (and for now only) RuntimeAdapter implementation.
|
|
6
|
+
*/
|
|
7
|
+
import type { Browser } from './browser.js';
|
|
8
|
+
import type { AKTree, VideoPageSignals } from './types.js';
|
|
9
|
+
import type { RuntimeAdapter, ClickOptions, WaitCondition, RecordingOptions, RecordingResult } from './execution-types.js';
|
|
10
|
+
import { type ResolveOptions } from './semantic-resolver.js';
|
|
11
|
+
export declare class WebPlaywrightLocal implements RuntimeAdapter {
|
|
12
|
+
private browser;
|
|
13
|
+
private recordingDir?;
|
|
14
|
+
private readonly sessionStartedAt;
|
|
15
|
+
private recording;
|
|
16
|
+
private clipCursor;
|
|
17
|
+
constructor(browser: Browser, recordingDir?: string | undefined);
|
|
18
|
+
navigate(url: string): Promise<void>;
|
|
19
|
+
getCurrentUrl(): Promise<string>;
|
|
20
|
+
getAKTree(): Promise<AKTree>;
|
|
21
|
+
getPageSignals(): Promise<VideoPageSignals>;
|
|
22
|
+
click(selector: string, options?: ClickOptions): Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Click an element using semantic target resolution.
|
|
25
|
+
* Tries CSS selector first, falls back to Playwright semantic locators.
|
|
26
|
+
*/
|
|
27
|
+
clickByTarget(opts: ResolveOptions): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Type into an element using semantic target resolution.
|
|
30
|
+
*/
|
|
31
|
+
typeByTarget(opts: ResolveOptions, text: string, clearFirst?: boolean): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Wait for an element using semantic target resolution.
|
|
34
|
+
*/
|
|
35
|
+
waitForTarget(opts: ResolveOptions, timeoutMs?: number): Promise<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Scroll an element into view using semantic target resolution.
|
|
38
|
+
*/
|
|
39
|
+
scrollIntoViewByTarget(opts: ResolveOptions): Promise<void>;
|
|
40
|
+
type(selector: string, text: string, clearFirst?: boolean): Promise<void>;
|
|
41
|
+
pressKey(key: string): Promise<void>;
|
|
42
|
+
scroll(direction: 'up' | 'down' | 'left' | 'right', amount?: number): Promise<void>;
|
|
43
|
+
scrollIntoView(selector: string): Promise<void>;
|
|
44
|
+
waitFor(condition: WaitCondition): Promise<boolean>;
|
|
45
|
+
dismissOverlays(): Promise<{
|
|
46
|
+
dismissed: boolean;
|
|
47
|
+
method: string | null;
|
|
48
|
+
}>;
|
|
49
|
+
takeScreenshot(): Promise<Buffer>;
|
|
50
|
+
takeElementScreenshot(selector: string): Promise<Buffer>;
|
|
51
|
+
takeCleanScreenshot(): Promise<Buffer>;
|
|
52
|
+
beginRecording(options: RecordingOptions): Promise<void>;
|
|
53
|
+
endRecording(): Promise<RecordingResult>;
|
|
54
|
+
setLocale(locale: string): Promise<void>;
|
|
55
|
+
setColorScheme(scheme: 'light' | 'dark'): Promise<void>;
|
|
56
|
+
reloadPage(): Promise<void>;
|
|
57
|
+
writeStorageHint(params: {
|
|
58
|
+
storage: 'localStorage' | 'sessionStorage' | 'cookie';
|
|
59
|
+
key: string;
|
|
60
|
+
value: string;
|
|
61
|
+
kind: 'locale' | 'theme';
|
|
62
|
+
}): Promise<boolean>;
|
|
63
|
+
hover(selector: string): Promise<void>;
|
|
64
|
+
hoverByTarget(opts: ResolveOptions): Promise<void>;
|
|
65
|
+
selectOption(selector: string, option: {
|
|
66
|
+
label?: string;
|
|
67
|
+
value?: string;
|
|
68
|
+
index?: number;
|
|
69
|
+
}): Promise<void>;
|
|
70
|
+
check(selector: string, checked: boolean): Promise<void>;
|
|
71
|
+
doubleClick(selector: string): Promise<void>;
|
|
72
|
+
cloneElement(opts: {
|
|
73
|
+
sourceSelector: string;
|
|
74
|
+
containerSelector: string;
|
|
75
|
+
count: number;
|
|
76
|
+
removeSource?: boolean;
|
|
77
|
+
}): Promise<{
|
|
78
|
+
clonedCount: number;
|
|
79
|
+
}>;
|
|
80
|
+
setAttribute(opts: {
|
|
81
|
+
selector: string;
|
|
82
|
+
attribute: string;
|
|
83
|
+
value: string;
|
|
84
|
+
}): Promise<void>;
|
|
85
|
+
setTextContent(opts: {
|
|
86
|
+
selector: string;
|
|
87
|
+
text: string;
|
|
88
|
+
}): Promise<void>;
|
|
89
|
+
removeElement(opts: {
|
|
90
|
+
selector: string;
|
|
91
|
+
}): Promise<{
|
|
92
|
+
removedCount: number;
|
|
93
|
+
}>;
|
|
94
|
+
setInputValue(opts: {
|
|
95
|
+
selector: string;
|
|
96
|
+
value: string;
|
|
97
|
+
}): Promise<void>;
|
|
98
|
+
clickHidden(opts: {
|
|
99
|
+
selector: string;
|
|
100
|
+
}): Promise<void>;
|
|
101
|
+
serializeDom(selector?: string): Promise<{
|
|
102
|
+
html: string;
|
|
103
|
+
assetUrls: string[];
|
|
104
|
+
viewport: {
|
|
105
|
+
width: number;
|
|
106
|
+
height: number;
|
|
107
|
+
};
|
|
108
|
+
capturedAt: string;
|
|
109
|
+
}>;
|
|
110
|
+
serializeFragment(selector: string): Promise<{
|
|
111
|
+
html: string;
|
|
112
|
+
assetUrls: string[];
|
|
113
|
+
capturedAt: string;
|
|
114
|
+
}>;
|
|
115
|
+
extractFavicon(): Promise<{
|
|
116
|
+
buffer: Buffer;
|
|
117
|
+
mimeType: string;
|
|
118
|
+
} | null>;
|
|
119
|
+
close(): Promise<void>;
|
|
120
|
+
private typeIntoLocator;
|
|
121
|
+
private seedClipCursor;
|
|
122
|
+
private moveClipCursorToViewportCenter;
|
|
123
|
+
private moveClipCursorToLocator;
|
|
124
|
+
private moveClipCursorToPoint;
|
|
125
|
+
private emitClipClickPulse;
|
|
126
|
+
}
|