@tangle-network/browser-agent-driver 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/LICENSE +196 -0
  2. package/README.md +149 -0
  3. package/dist/artifacts/composite-sink.d.ts +15 -0
  4. package/dist/artifacts/composite-sink.d.ts.map +1 -0
  5. package/dist/artifacts/composite-sink.js +27 -0
  6. package/dist/artifacts/composite-sink.js.map +1 -0
  7. package/dist/artifacts/filesystem-sink.d.ts +26 -0
  8. package/dist/artifacts/filesystem-sink.d.ts.map +1 -0
  9. package/dist/artifacts/filesystem-sink.js +81 -0
  10. package/dist/artifacts/filesystem-sink.js.map +1 -0
  11. package/dist/artifacts/types.d.ts +97 -0
  12. package/dist/artifacts/types.d.ts.map +1 -0
  13. package/dist/artifacts/types.js +9 -0
  14. package/dist/artifacts/types.js.map +1 -0
  15. package/dist/artifacts/webhook-sink.d.ts +71 -0
  16. package/dist/artifacts/webhook-sink.d.ts.map +1 -0
  17. package/dist/artifacts/webhook-sink.js +117 -0
  18. package/dist/artifacts/webhook-sink.js.map +1 -0
  19. package/dist/brain/index.d.ts +149 -0
  20. package/dist/brain/index.d.ts.map +1 -0
  21. package/dist/brain/index.js +1030 -0
  22. package/dist/brain/index.js.map +1 -0
  23. package/dist/browser-launch.d.ts +27 -0
  24. package/dist/browser-launch.d.ts.map +1 -0
  25. package/dist/browser-launch.js +92 -0
  26. package/dist/browser-launch.js.map +1 -0
  27. package/dist/cli.d.ts +14 -0
  28. package/dist/cli.d.ts.map +1 -0
  29. package/dist/cli.js +1035 -0
  30. package/dist/cli.js.map +1 -0
  31. package/dist/config.d.ts +143 -0
  32. package/dist/config.d.ts.map +1 -0
  33. package/dist/config.js +205 -0
  34. package/dist/config.js.map +1 -0
  35. package/dist/context-budget.d.ts +14 -0
  36. package/dist/context-budget.d.ts.map +1 -0
  37. package/dist/context-budget.js +39 -0
  38. package/dist/context-budget.js.map +1 -0
  39. package/dist/design-audit.d.ts +48 -0
  40. package/dist/design-audit.d.ts.map +1 -0
  41. package/dist/design-audit.js +172 -0
  42. package/dist/design-audit.js.map +1 -0
  43. package/dist/domain-policy.d.ts +4 -0
  44. package/dist/domain-policy.d.ts.map +1 -0
  45. package/dist/domain-policy.js +69 -0
  46. package/dist/domain-policy.js.map +1 -0
  47. package/dist/drivers/block-patterns.d.ts +11 -0
  48. package/dist/drivers/block-patterns.d.ts.map +1 -0
  49. package/dist/drivers/block-patterns.js +123 -0
  50. package/dist/drivers/block-patterns.js.map +1 -0
  51. package/dist/drivers/cdp-page-state.d.ts +22 -0
  52. package/dist/drivers/cdp-page-state.d.ts.map +1 -0
  53. package/dist/drivers/cdp-page-state.js +38 -0
  54. package/dist/drivers/cdp-page-state.js.map +1 -0
  55. package/dist/drivers/cdp-snapshot.d.ts +32 -0
  56. package/dist/drivers/cdp-snapshot.d.ts.map +1 -0
  57. package/dist/drivers/cdp-snapshot.js +120 -0
  58. package/dist/drivers/cdp-snapshot.js.map +1 -0
  59. package/dist/drivers/playwright.d.ts +84 -0
  60. package/dist/drivers/playwright.d.ts.map +1 -0
  61. package/dist/drivers/playwright.js +385 -0
  62. package/dist/drivers/playwright.js.map +1 -0
  63. package/dist/drivers/snapshot.d.ts +134 -0
  64. package/dist/drivers/snapshot.d.ts.map +1 -0
  65. package/dist/drivers/snapshot.js +354 -0
  66. package/dist/drivers/snapshot.js.map +1 -0
  67. package/dist/drivers/types.d.ts +37 -0
  68. package/dist/drivers/types.d.ts.map +1 -0
  69. package/dist/drivers/types.js +5 -0
  70. package/dist/drivers/types.js.map +1 -0
  71. package/dist/env-loader.d.ts +2 -0
  72. package/dist/env-loader.d.ts.map +1 -0
  73. package/dist/env-loader.js +35 -0
  74. package/dist/env-loader.js.map +1 -0
  75. package/dist/formatters/slack.d.ts +37 -0
  76. package/dist/formatters/slack.d.ts.map +1 -0
  77. package/dist/formatters/slack.js +97 -0
  78. package/dist/formatters/slack.js.map +1 -0
  79. package/dist/index.d.ts +60 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +53 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/memory/analyzer.d.ts +67 -0
  84. package/dist/memory/analyzer.d.ts.map +1 -0
  85. package/dist/memory/analyzer.js +265 -0
  86. package/dist/memory/analyzer.js.map +1 -0
  87. package/dist/memory/knowledge.d.ts +55 -0
  88. package/dist/memory/knowledge.d.ts.map +1 -0
  89. package/dist/memory/knowledge.js +115 -0
  90. package/dist/memory/knowledge.js.map +1 -0
  91. package/dist/memory/project-store.d.ts +43 -0
  92. package/dist/memory/project-store.d.ts.map +1 -0
  93. package/dist/memory/project-store.js +119 -0
  94. package/dist/memory/project-store.js.map +1 -0
  95. package/dist/memory/selectors.d.ts +46 -0
  96. package/dist/memory/selectors.d.ts.map +1 -0
  97. package/dist/memory/selectors.js +89 -0
  98. package/dist/memory/selectors.js.map +1 -0
  99. package/dist/memory/store.d.ts +39 -0
  100. package/dist/memory/store.d.ts.map +1 -0
  101. package/dist/memory/store.js +193 -0
  102. package/dist/memory/store.js.map +1 -0
  103. package/dist/model-pricing.d.ts +41 -0
  104. package/dist/model-pricing.d.ts.map +1 -0
  105. package/dist/model-pricing.js +197 -0
  106. package/dist/model-pricing.js.map +1 -0
  107. package/dist/multi-actor.d.ts +108 -0
  108. package/dist/multi-actor.d.ts.map +1 -0
  109. package/dist/multi-actor.js +192 -0
  110. package/dist/multi-actor.js.map +1 -0
  111. package/dist/override-pipeline.d.ts +57 -0
  112. package/dist/override-pipeline.d.ts.map +1 -0
  113. package/dist/override-pipeline.js +26 -0
  114. package/dist/override-pipeline.js.map +1 -0
  115. package/dist/personas.d.ts +19 -0
  116. package/dist/personas.d.ts.map +1 -0
  117. package/dist/personas.js +86 -0
  118. package/dist/personas.js.map +1 -0
  119. package/dist/preview.d.ts +32 -0
  120. package/dist/preview.d.ts.map +1 -0
  121. package/dist/preview.js +138 -0
  122. package/dist/preview.js.map +1 -0
  123. package/dist/provider-defaults.d.ts +6 -0
  124. package/dist/provider-defaults.d.ts.map +1 -0
  125. package/dist/provider-defaults.js +40 -0
  126. package/dist/provider-defaults.js.map +1 -0
  127. package/dist/providers/sandbox-backend.d.ts +22 -0
  128. package/dist/providers/sandbox-backend.d.ts.map +1 -0
  129. package/dist/providers/sandbox-backend.js +259 -0
  130. package/dist/providers/sandbox-backend.js.map +1 -0
  131. package/dist/recovery.d.ts +91 -0
  132. package/dist/recovery.d.ts.map +1 -0
  133. package/dist/recovery.js +500 -0
  134. package/dist/recovery.js.map +1 -0
  135. package/dist/reporters/junit.d.ts +8 -0
  136. package/dist/reporters/junit.d.ts.map +1 -0
  137. package/dist/reporters/junit.js +99 -0
  138. package/dist/reporters/junit.js.map +1 -0
  139. package/dist/run-metrics.d.ts +4 -0
  140. package/dist/run-metrics.d.ts.map +1 -0
  141. package/dist/run-metrics.js +48 -0
  142. package/dist/run-metrics.js.map +1 -0
  143. package/dist/run-state.d.ts +22 -0
  144. package/dist/run-state.d.ts.map +1 -0
  145. package/dist/run-state.js +33 -0
  146. package/dist/run-state.js.map +1 -0
  147. package/dist/runner/goal-verification.d.ts +13 -0
  148. package/dist/runner/goal-verification.d.ts.map +1 -0
  149. package/dist/runner/goal-verification.js +152 -0
  150. package/dist/runner/goal-verification.js.map +1 -0
  151. package/dist/runner/index.d.ts +12 -0
  152. package/dist/runner/index.d.ts.map +1 -0
  153. package/dist/runner/index.js +18 -0
  154. package/dist/runner/index.js.map +1 -0
  155. package/dist/runner/overrides.d.ts +75 -0
  156. package/dist/runner/overrides.d.ts.map +1 -0
  157. package/dist/runner/overrides.js +385 -0
  158. package/dist/runner/overrides.js.map +1 -0
  159. package/dist/runner/page-analysis.d.ts +23 -0
  160. package/dist/runner/page-analysis.d.ts.map +1 -0
  161. package/dist/runner/page-analysis.js +91 -0
  162. package/dist/runner/page-analysis.js.map +1 -0
  163. package/dist/runner/runner.d.ts +66 -0
  164. package/dist/runner/runner.d.ts.map +1 -0
  165. package/dist/runner/runner.js +1314 -0
  166. package/dist/runner/runner.js.map +1 -0
  167. package/dist/runner/scout.d.ts +29 -0
  168. package/dist/runner/scout.d.ts.map +1 -0
  169. package/dist/runner/scout.js +81 -0
  170. package/dist/runner/scout.js.map +1 -0
  171. package/dist/runner/search-guidance.d.ts +31 -0
  172. package/dist/runner/search-guidance.d.ts.map +1 -0
  173. package/dist/runner/search-guidance.js +210 -0
  174. package/dist/runner/search-guidance.js.map +1 -0
  175. package/dist/runner/utils.d.ts +28 -0
  176. package/dist/runner/utils.d.ts.map +1 -0
  177. package/dist/runner/utils.js +119 -0
  178. package/dist/runner/utils.js.map +1 -0
  179. package/dist/runner.d.ts +8 -0
  180. package/dist/runner.d.ts.map +1 -0
  181. package/dist/runner.js +21 -0
  182. package/dist/runner.js.map +1 -0
  183. package/dist/supervisor/critic.d.ts +29 -0
  184. package/dist/supervisor/critic.d.ts.map +1 -0
  185. package/dist/supervisor/critic.js +320 -0
  186. package/dist/supervisor/critic.js.map +1 -0
  187. package/dist/supervisor/policy.d.ts +11 -0
  188. package/dist/supervisor/policy.d.ts.map +1 -0
  189. package/dist/supervisor/policy.js +118 -0
  190. package/dist/supervisor/policy.js.map +1 -0
  191. package/dist/test-report.d.ts +15 -0
  192. package/dist/test-report.d.ts.map +1 -0
  193. package/dist/test-report.js +241 -0
  194. package/dist/test-report.js.map +1 -0
  195. package/dist/test-runner.d.ts +99 -0
  196. package/dist/test-runner.d.ts.map +1 -0
  197. package/dist/test-runner.js +1075 -0
  198. package/dist/test-runner.js.map +1 -0
  199. package/dist/types.d.ts +493 -0
  200. package/dist/types.d.ts.map +1 -0
  201. package/dist/types.js +5 -0
  202. package/dist/types.js.map +1 -0
  203. package/dist/wallet/automation.d.ts +52 -0
  204. package/dist/wallet/automation.d.ts.map +1 -0
  205. package/dist/wallet/automation.js +507 -0
  206. package/dist/wallet/automation.js.map +1 -0
  207. package/package.json +101 -0
  208. package/scripts/postinstall-provider-patches.mjs +52 -0
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Runner utility functions — retry logic, snapshot helpers, text normalization.
3
+ */
4
+ const DEFAULT_MAX_GOAL_VERIFICATION_EVIDENCE = 5;
5
+ /** Retry wrapper for transient failures. Respects AbortSignal between attempts. */
6
+ export async function withRetry(fn, retries, delayMs, onRetry, signal) {
7
+ let lastError;
8
+ for (let attempt = 1; attempt <= retries; attempt++) {
9
+ if (signal?.aborted)
10
+ throw new Error(signal.reason || 'Cancelled');
11
+ try {
12
+ return await fn();
13
+ }
14
+ catch (err) {
15
+ lastError = err instanceof Error ? err : new Error(String(err));
16
+ if (attempt < retries) {
17
+ onRetry?.(attempt, lastError);
18
+ await new Promise((resolve, reject) => {
19
+ let onAbort;
20
+ const timer = setTimeout(() => {
21
+ if (onAbort)
22
+ signal?.removeEventListener('abort', onAbort);
23
+ resolve();
24
+ }, delayMs * attempt);
25
+ if (signal) {
26
+ onAbort = () => { clearTimeout(timer); reject(new Error(signal.reason || 'Cancelled')); };
27
+ if (signal.aborted) {
28
+ clearTimeout(timer);
29
+ reject(new Error(signal.reason || 'Cancelled'));
30
+ return;
31
+ }
32
+ signal.addEventListener('abort', onAbort, { once: true });
33
+ }
34
+ });
35
+ }
36
+ }
37
+ }
38
+ throw lastError ?? new Error('withRetry: no attempts made');
39
+ }
40
+ /**
41
+ * Extract the element identity (e.g., 'button "Send"') for a given @ref
42
+ * from an a11y snapshot. Returns undefined if the ref is not found.
43
+ */
44
+ export function findElementForRef(snapshot, selector) {
45
+ if (!selector.startsWith('@'))
46
+ return undefined;
47
+ const bareRef = selector.slice(1);
48
+ // Match: role "name" [ref=XXX] in the snapshot
49
+ const regex = new RegExp(`(\\w+ "[^"]*")\\s*\\[ref=${bareRef}\\]`);
50
+ const match = snapshot.match(regex);
51
+ return match?.[1];
52
+ }
53
+ export function safeHostname(url) {
54
+ try {
55
+ return new URL(url).hostname.toLowerCase();
56
+ }
57
+ catch {
58
+ return undefined;
59
+ }
60
+ }
61
+ export function requiresSearchWorkflowEvidence(goal) {
62
+ const goalLower = goal.toLowerCase();
63
+ return (goalLower.includes("site's search feature")
64
+ || goalLower.includes('\u2019s search feature')
65
+ || goalLower.includes('site search'));
66
+ }
67
+ export function requiresPressReleaseLikeContent(goal) {
68
+ const goalLower = goal.toLowerCase();
69
+ return PRESS_RELEASE_RE.test(goalLower);
70
+ }
71
+ /** Matches press-release / news-release mentions in text. */
72
+ export const PRESS_RELEASE_RE = /\bpress release\b|\bnews release\b/i;
73
+ /** Matches NIH non-release content signals (research matters, fact sheets, topic pages). */
74
+ export const NON_RELEASE_CONTENT_RE = /\bnih research matters\b|\bnews in health\b|\bcatalyst\b|\bfact sheet\b|\bwhat causes\b|\bwhat are the signs\b|\btreated\b/i;
75
+ /** Matches URL path patterns typical of non-release content pages. */
76
+ export const NON_RELEASE_URL_RE = /\/nih-research-matters\/|\/science-updates\/|\/health\/|\/research\/|\/blog\//i;
77
+ export function looksLikeSearchResultsPage(state) {
78
+ const haystack = `${state.url}\n${state.title}\n${state.snapshot}`.toLowerCase();
79
+ return /\bsearch\b|\bsearch results\b|\bquery=/.test(haystack);
80
+ }
81
+ export function normalizeLooseText(value) {
82
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, ' ').trim();
83
+ }
84
+ export function extractRelevantSnapshotExcerpt(snapshot, terms) {
85
+ const lines = snapshot.split('\n');
86
+ const normalizedTerms = terms
87
+ .map((term) => term.toLowerCase())
88
+ .filter(Boolean);
89
+ const matchingIndexes = lines
90
+ .map((line, index) => ({ line: line.toLowerCase(), index }))
91
+ .filter(({ line }) => normalizedTerms.some((term) => line.includes(term)))
92
+ .map(({ index }) => index);
93
+ if (matchingIndexes.length === 0) {
94
+ return lines.slice(0, 12).join('\n');
95
+ }
96
+ const start = Math.max(0, matchingIndexes[0] - 2);
97
+ const end = Math.min(lines.length, matchingIndexes[matchingIndexes.length - 1] + 3);
98
+ return lines.slice(start, end).join('\n');
99
+ }
100
+ export function findLinkRefByExactText(snapshot, text) {
101
+ const escaped = text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
102
+ const match = snapshot.match(new RegExp(`- link "${escaped}" \\[ref=([^\\]]+)\\]`));
103
+ return match?.[1] ? `@${match[1]}` : undefined;
104
+ }
105
+ export function findLinkRefContainingText(snapshot, text) {
106
+ const escaped = text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
107
+ const match = snapshot.match(new RegExp(`- link "([^"]*${escaped}[^"]*)" \\[ref=([^\\]]+)\\]`, 'i'));
108
+ return match?.[2] ? `@${match[2]}` : undefined;
109
+ }
110
+ export function pushGoalVerificationEvidence(target, entry) {
111
+ target.push(entry);
112
+ if (target.length > DEFAULT_MAX_GOAL_VERIFICATION_EVIDENCE) {
113
+ target.splice(0, target.length - DEFAULT_MAX_GOAL_VERIFICATION_EVIDENCE);
114
+ }
115
+ }
116
+ export function hasFullDate(text) {
117
+ return /\b(january|february|march|april|may|june|july|august|september|october|november|december)\s+\d{1,2},\s+\d{4}\b/i.test(text);
118
+ }
119
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/runner/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Runner barrel — backwards-compatible re-export from src/runner/ modules.
3
+ *
4
+ * All existing imports from './runner.js' or '../src/runner.js' continue to work.
5
+ */
6
+ export { AgentRunner, runAgent, withRetry, buildSearchResultsGuidance, rankSearchCandidates, buildVisibleLinkRecommendation, getVisibleLinkRecommendation, getRankedVisibleLinkCandidates, buildGoalVerificationClaim, collectSearchWorkflowEvidence, shouldAcceptSearchWorkflowCompletion, shouldAcceptScriptBackedCompletion, detectCompletionContentTypeMismatch, detectAiTangleVerifiedOutputState, detectAiTanglePartnerTemplateVisibleState, shouldUseVisibleLinkScout, shouldUseVisibleLinkScoutPage, shouldUseBoundedBranchExplorer, scoreBranchPreview, chooseVisibleLinkOverride, chooseScoutLinkOverride, chooseBranchLinkOverride, chooseSearchResultsNewsTabOverride, chooseSearchQueryOverride, chooseNewsReleasesHubOverride, chooseVisibleNewsReleaseResultOverride, chooseVisibleSearchResultOverride, chooseExpandableListCompletionOverride, } from './runner/index.js';
7
+ export type { RunnerOptions } from './runner/index.js';
8
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAEL,WAAW,EACX,QAAQ,EAGR,SAAS,EAGT,0BAA0B,EAC1B,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,8BAA8B,EAG9B,0BAA0B,EAC1B,6BAA6B,EAC7B,oCAAoC,EACpC,kCAAkC,EAClC,mCAAmC,EAGnC,iCAAiC,EACjC,yCAAyC,EAGzC,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,kBAAkB,EAGlB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,kCAAkC,EAClC,yBAAyB,EACzB,6BAA6B,EAC7B,sCAAsC,EACtC,iCAAiC,EACjC,sCAAsC,GACvC,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/runner.js ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Runner barrel — backwards-compatible re-export from src/runner/ modules.
3
+ *
4
+ * All existing imports from './runner.js' or '../src/runner.js' continue to work.
5
+ */
6
+ export {
7
+ // Core
8
+ AgentRunner, runAgent,
9
+ // Utilities
10
+ withRetry,
11
+ // Search guidance
12
+ buildSearchResultsGuidance, rankSearchCandidates, buildVisibleLinkRecommendation, getVisibleLinkRecommendation, getRankedVisibleLinkCandidates,
13
+ // Goal verification
14
+ buildGoalVerificationClaim, collectSearchWorkflowEvidence, shouldAcceptSearchWorkflowCompletion, shouldAcceptScriptBackedCompletion, detectCompletionContentTypeMismatch,
15
+ // Page analysis
16
+ detectAiTangleVerifiedOutputState, detectAiTanglePartnerTemplateVisibleState,
17
+ // Scout
18
+ shouldUseVisibleLinkScout, shouldUseVisibleLinkScoutPage, shouldUseBoundedBranchExplorer, scoreBranchPreview,
19
+ // Overrides
20
+ chooseVisibleLinkOverride, chooseScoutLinkOverride, chooseBranchLinkOverride, chooseSearchResultsNewsTabOverride, chooseSearchQueryOverride, chooseNewsReleasesHubOverride, chooseVisibleNewsReleaseResultOverride, chooseVisibleSearchResultOverride, chooseExpandableListCompletionOverride, } from './runner/index.js';
21
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO;AACL,OAAO;AACP,WAAW,EACX,QAAQ;AAER,YAAY;AACZ,SAAS;AAET,kBAAkB;AAClB,0BAA0B,EAC1B,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,8BAA8B;AAE9B,oBAAoB;AACpB,0BAA0B,EAC1B,6BAA6B,EAC7B,oCAAoC,EACpC,kCAAkC,EAClC,mCAAmC;AAEnC,gBAAgB;AAChB,iCAAiC,EACjC,yCAAyC;AAEzC,QAAQ;AACR,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,kBAAkB;AAElB,YAAY;AACZ,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,kCAAkC,EAClC,yBAAyB,EACzB,6BAA6B,EAC7B,sCAAsC,EACtC,iCAAiC,EACjC,sCAAsC,GACvC,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { PageState, SupervisorDirective, SupervisorSignal, Turn } from '../types.js';
2
+ export interface SupervisorCriticInput {
3
+ goal: string;
4
+ currentState: PageState;
5
+ recentTurns: Turn[];
6
+ signal: SupervisorSignal;
7
+ provider: 'openai' | 'anthropic' | 'google' | 'codex-cli' | 'claude-code' | 'sandbox-backend';
8
+ model: string;
9
+ useVision?: boolean;
10
+ apiKey?: string;
11
+ baseUrl?: string;
12
+ timeoutMs?: number;
13
+ debug?: boolean;
14
+ sandboxBackendType?: string;
15
+ sandboxBackendProfile?: string;
16
+ sandboxBackendProvider?: string;
17
+ }
18
+ type SupervisorUserContent = string | Array<{
19
+ type: 'text';
20
+ text: string;
21
+ } | {
22
+ type: 'image';
23
+ image: string;
24
+ mediaType: string;
25
+ }>;
26
+ export declare function requestSupervisorDirective(input: SupervisorCriticInput): Promise<SupervisorDirective>;
27
+ export declare function buildSupervisorUserContent(text: string, currentState: PageState, useVision: boolean): SupervisorUserContent;
28
+ export {};
29
+ //# sourceMappingURL=critic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"critic.d.ts","sourceRoot":"","sources":["../../src/supervisor/critic.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,IAAI,EACL,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,aAAa,GAAG,iBAAiB,CAAC;IAC9F,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,KAAK,qBAAqB,GACtB,MAAM,GACN,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAiChG,wBAAsB,0BAA0B,CAC9C,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CA+B9B;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,OAAO,GACjB,qBAAqB,CAavB"}
@@ -0,0 +1,320 @@
1
+ import { generateText } from 'ai';
2
+ import { resolveProviderApiKey, resolveProviderModelName } from '../provider-defaults.js';
3
+ import { generateWithSandboxBackend } from '../providers/sandbox-backend.js';
4
+ const SUPERVISOR_PROMPT = `You are a supervising browser-automation strategist.
5
+
6
+ You are invoked ONLY when the worker agent is hard-stalled.
7
+ Return one intervention that is most likely to recover progress.
8
+
9
+ You may receive:
10
+ - a screenshot showing the actual visual layout and modal state
11
+ - a text accessibility snapshot listing interactive elements and @ref IDs
12
+
13
+ Use BOTH when available. Trust the accessibility snapshot for valid selectors.
14
+
15
+ DECISIONS:
16
+ - "none": no intervention
17
+ - "inject_feedback": send tactical guidance to the worker agent
18
+ - "force_action": execute one browser action immediately
19
+ - "abort": end the run when progress is impossible
20
+
21
+ FOR "force_action":
22
+ - Choose one action from: click, type, press, hover, select, scroll, navigate, wait
23
+ - If using selector, use ONLY refs present in ELEMENTS as "@refId"
24
+ - Prefer low-risk unblock actions before destructive actions
25
+
26
+ Respond ONLY JSON:
27
+ {
28
+ "decision": "inject_feedback",
29
+ "reason": "why this intervention should work",
30
+ "feedback": "clear tactical instruction for the worker",
31
+ "confidence": 0.78,
32
+ "action": { "action": "click", "selector": "@abc123" }
33
+ }`;
34
+ export async function requestSupervisorDirective(input) {
35
+ const turnSummary = summarizeTurns(input.recentTurns);
36
+ const text = [
37
+ `GOAL: ${input.goal}`,
38
+ '',
39
+ `STALL SIGNAL: severity=${input.signal.severity}; reasons=${input.signal.reasons.join(', ') || 'none'}`,
40
+ `METRICS: unchangedTurns=${input.signal.unchangedTurns}, repeatedActionCount=${input.signal.repeatedActionCount}, errorTurns=${input.signal.errorTurns}, verificationFailures=${input.signal.verificationFailures}`,
41
+ '',
42
+ 'RECENT TURNS:',
43
+ turnSummary || '(none)',
44
+ '',
45
+ 'CURRENT PAGE:',
46
+ `URL: ${input.currentState.url}`,
47
+ `Title: ${input.currentState.title}`,
48
+ 'ELEMENTS:',
49
+ input.currentState.snapshot,
50
+ '',
51
+ 'Pick the best intervention now.',
52
+ ].join('\n');
53
+ const userContent = buildSupervisorUserContent(text, input.currentState, input.useVision !== false);
54
+ const raw = (await generateSupervisorText(input, userContent)).trim();
55
+ if (input.debug) {
56
+ console.log('[Supervisor] Critic response:', raw.slice(0, 400));
57
+ }
58
+ if (!raw) {
59
+ return { decision: 'none', reason: 'empty supervisor response' };
60
+ }
61
+ return parseDirective(raw, input.currentState.snapshot);
62
+ }
63
+ export function buildSupervisorUserContent(text, currentState, useVision) {
64
+ if (!useVision || !currentState.screenshot) {
65
+ return text;
66
+ }
67
+ return [
68
+ { type: 'text', text },
69
+ {
70
+ type: 'image',
71
+ image: currentState.screenshot,
72
+ mediaType: 'image/jpeg',
73
+ },
74
+ ];
75
+ }
76
+ function summarizeTurns(turns) {
77
+ return turns
78
+ .slice(-8)
79
+ .map((turn) => {
80
+ const status = turn.error
81
+ ? `error=${turn.error}`
82
+ : turn.verificationFailure
83
+ ? `verifyFail=${turn.verificationFailure}`
84
+ : 'ok';
85
+ return `- T${turn.turn}: ${turn.action.action} @ ${truncate(turn.state.url, 80)} | ${status}`;
86
+ })
87
+ .join('\n');
88
+ }
89
+ function truncate(input, maxLen) {
90
+ if (input.length <= maxLen)
91
+ return input;
92
+ return `${input.slice(0, maxLen - 3)}...`;
93
+ }
94
+ function parseDirective(raw, snapshot) {
95
+ try {
96
+ let text = raw.trim();
97
+ if (text.startsWith('```')) {
98
+ text = text.replace(/^```(?:json)?\n?/, '').replace(/\n?```$/, '');
99
+ }
100
+ const parsed = JSON.parse(text);
101
+ const decision = normalizeDecision(parsed.decision);
102
+ const reason = typeof parsed.reason === 'string' ? parsed.reason : undefined;
103
+ const feedback = typeof parsed.feedback === 'string' ? parsed.feedback : undefined;
104
+ const confidence = clampConfidence(parsed.confidence);
105
+ if (decision !== 'force_action') {
106
+ return { decision, reason, feedback, confidence, raw };
107
+ }
108
+ const candidateAction = normalizeAction(parsed.action);
109
+ if (!candidateAction) {
110
+ return {
111
+ decision: 'inject_feedback',
112
+ reason: reason || 'invalid force_action payload',
113
+ feedback: feedback || 'Force action was invalid. Re-plan with a different strategy.',
114
+ confidence,
115
+ raw,
116
+ };
117
+ }
118
+ if (!validateSelectorRefs(candidateAction, snapshot)) {
119
+ return {
120
+ decision: 'inject_feedback',
121
+ reason: reason || 'force_action selector not present in current snapshot',
122
+ feedback: feedback || 'Use only selectors visible in current ELEMENTS refs.',
123
+ confidence,
124
+ raw,
125
+ };
126
+ }
127
+ return { decision, action: candidateAction, reason, feedback, confidence, raw };
128
+ }
129
+ catch {
130
+ return { decision: 'none', reason: 'failed to parse supervisor JSON', raw };
131
+ }
132
+ }
133
+ function normalizeDecision(value) {
134
+ if (value === 'inject_feedback' || value === 'force_action' || value === 'abort') {
135
+ return value;
136
+ }
137
+ return 'none';
138
+ }
139
+ function clampConfidence(value) {
140
+ if (typeof value !== 'number' || Number.isNaN(value))
141
+ return undefined;
142
+ return Math.max(0, Math.min(1, value));
143
+ }
144
+ function normalizeAction(value) {
145
+ if (!value || typeof value !== 'object')
146
+ return null;
147
+ const data = value;
148
+ const actionType = typeof data.action === 'string' ? data.action : '';
149
+ const requireStr = (field) => {
150
+ const v = data[field];
151
+ return typeof v === 'string' && v.length > 0 ? v : null;
152
+ };
153
+ const optionalStr = (field) => {
154
+ const v = data[field];
155
+ return typeof v === 'string' ? v : '';
156
+ };
157
+ const asNumber = (field, fallback) => {
158
+ const v = data[field];
159
+ return typeof v === 'number' && Number.isFinite(v) ? v : fallback;
160
+ };
161
+ switch (actionType) {
162
+ case 'click': {
163
+ const selector = requireStr('selector');
164
+ return selector ? { action: 'click', selector } : null;
165
+ }
166
+ case 'type': {
167
+ const selector = requireStr('selector');
168
+ if (!selector)
169
+ return null;
170
+ return { action: 'type', selector, text: optionalStr('text') };
171
+ }
172
+ case 'press': {
173
+ const selector = requireStr('selector');
174
+ const key = requireStr('key');
175
+ if (!selector || !key)
176
+ return null;
177
+ return { action: 'press', selector, key };
178
+ }
179
+ case 'hover': {
180
+ const selector = requireStr('selector');
181
+ return selector ? { action: 'hover', selector } : null;
182
+ }
183
+ case 'select': {
184
+ const selector = requireStr('selector');
185
+ if (!selector)
186
+ return null;
187
+ return { action: 'select', selector, value: optionalStr('value') };
188
+ }
189
+ case 'scroll': {
190
+ const direction = data.direction === 'up' ? 'up' : 'down';
191
+ const amount = asNumber('amount', 500);
192
+ const selector = typeof data.selector === 'string' ? data.selector : undefined;
193
+ return { action: 'scroll', direction, amount, ...(selector ? { selector } : {}) };
194
+ }
195
+ case 'navigate': {
196
+ const url = requireStr('url');
197
+ if (!url || !/^https?:\/\//i.test(url))
198
+ return null;
199
+ return { action: 'navigate', url };
200
+ }
201
+ case 'wait':
202
+ return { action: 'wait', ms: asNumber('ms', 1000) };
203
+ default:
204
+ return null;
205
+ }
206
+ }
207
+ function validateSelectorRefs(action, snapshot) {
208
+ if (!('selector' in action) || typeof action.selector !== 'string')
209
+ return true;
210
+ const selector = action.selector.trim();
211
+ if (!selector.startsWith('@'))
212
+ return true;
213
+ const knownRefs = new Set(Array.from(snapshot.matchAll(/\[ref=([^\]]+)\]/g)).map((match) => `@${match[1]}`));
214
+ return knownRefs.has(selector);
215
+ }
216
+ function shouldSendTemperature(modelName) {
217
+ return !/^gpt-5(?:[.-]|$)/i.test(modelName);
218
+ }
219
+ async function getModel(config) {
220
+ const modelName = resolveProviderModelName(config.provider, config.model);
221
+ const apiKey = resolveProviderApiKey(config.provider, config.apiKey);
222
+ switch (config.provider) {
223
+ case 'anthropic': {
224
+ const { createAnthropic } = await import('@ai-sdk/anthropic');
225
+ const provider = createAnthropic({
226
+ apiKey,
227
+ ...(config.baseUrl ? { baseURL: config.baseUrl } : {}),
228
+ });
229
+ return provider(modelName);
230
+ }
231
+ case 'google': {
232
+ const { createGoogleGenerativeAI } = await import('@ai-sdk/google');
233
+ const provider = createGoogleGenerativeAI({
234
+ apiKey,
235
+ ...(config.baseUrl ? { baseURL: config.baseUrl } : {}),
236
+ });
237
+ return provider(modelName);
238
+ }
239
+ case 'codex-cli': {
240
+ const { codexExec } = await import('ai-sdk-provider-codex-cli');
241
+ const env = {};
242
+ if (apiKey)
243
+ env.OPENAI_API_KEY = apiKey;
244
+ return codexExec(modelName, {
245
+ allowNpx: process.env.CODEX_ALLOW_NPX !== '0',
246
+ skipGitRepoCheck: true,
247
+ ...(process.env.CODEX_CLI_PATH ? { codexPath: process.env.CODEX_CLI_PATH } : {}),
248
+ ...(Object.keys(env).length > 0 ? { env } : {}),
249
+ });
250
+ }
251
+ case 'claude-code': {
252
+ const { createClaudeCode } = await import('ai-sdk-provider-claude-code');
253
+ const env = {};
254
+ if (apiKey)
255
+ env.ANTHROPIC_API_KEY = apiKey;
256
+ const provider = createClaudeCode({
257
+ defaultSettings: {
258
+ ...(process.env.CLAUDE_CODE_CLI_PATH ? { pathToClaudeCodeExecutable: process.env.CLAUDE_CODE_CLI_PATH } : {}),
259
+ permissionMode: 'default',
260
+ allowDangerouslySkipPermissions: false,
261
+ ...(config.debug ? { verbose: true } : {}),
262
+ ...(config.debug
263
+ ? {
264
+ stderr: (chunk) => {
265
+ const line = chunk.trim();
266
+ if (line)
267
+ console.error(`[claude-code] ${line}`);
268
+ },
269
+ }
270
+ : {}),
271
+ ...(Object.keys(env).length > 0 ? { env } : {}),
272
+ },
273
+ });
274
+ return provider(modelName);
275
+ }
276
+ default: {
277
+ const { createOpenAI } = await import('@ai-sdk/openai');
278
+ const provider = createOpenAI({
279
+ apiKey: apiKey || '',
280
+ ...(config.baseUrl ? { baseURL: config.baseUrl } : {}),
281
+ });
282
+ return provider(modelName);
283
+ }
284
+ }
285
+ }
286
+ async function generateSupervisorText(input, userContent) {
287
+ const modelName = resolveProviderModelName(input.provider, input.model, {
288
+ sandboxBackendType: input.provider === 'sandbox-backend' ? input.sandboxBackendType : undefined,
289
+ });
290
+ if (input.provider === 'sandbox-backend') {
291
+ const result = await generateWithSandboxBackend({
292
+ model: modelName,
293
+ system: SUPERVISOR_PROMPT,
294
+ messages: [{ role: 'user', content: userContent }],
295
+ timeoutMs: input.timeoutMs ?? 45_000,
296
+ debug: input.debug,
297
+ backendType: input.sandboxBackendType,
298
+ backendProfile: input.sandboxBackendProfile,
299
+ backendModelProvider: input.sandboxBackendProvider,
300
+ });
301
+ return result.text ?? '';
302
+ }
303
+ const model = await getModel({
304
+ provider: input.provider,
305
+ model: modelName,
306
+ apiKey: input.apiKey,
307
+ baseUrl: input.baseUrl,
308
+ debug: input.debug,
309
+ });
310
+ const result = await generateText({
311
+ model,
312
+ system: SUPERVISOR_PROMPT,
313
+ messages: [{ role: 'user', content: userContent }],
314
+ ...(shouldSendTemperature(modelName) ? { temperature: 0 } : {}),
315
+ ...(input.provider === 'codex-cli' || input.provider === 'claude-code' ? {} : { maxOutputTokens: 700 }),
316
+ abortSignal: AbortSignal.timeout(input.timeoutMs ?? 45_000),
317
+ });
318
+ return result.text ?? '';
319
+ }
320
+ //# sourceMappingURL=critic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"critic.js","sourceRoot":"","sources":["../../src/supervisor/critic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { PageState, SupervisorSignal, Turn } from '../types.js';
2
+ export interface SupervisorPolicyInput {
3
+ recentTurns: Turn[];
4
+ currentState: PageState;
5
+ currentTurn: number;
6
+ maxTurns: number;
7
+ window?: number;
8
+ }
9
+ export declare function detectSupervisorSignal(input: SupervisorPolicyInput): SupervisorSignal;
10
+ export declare function formatSupervisorSignal(signal: SupervisorSignal): string;
11
+ //# sourceMappingURL=policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/supervisor/policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAU,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAE7E,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,YAAY,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,gBAAgB,CA4DrF;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAUvE"}