@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,48 @@
1
+ function normalizeWhitespace(value) {
2
+ return value.trim().replace(/\s+/g, ' ').toLowerCase();
3
+ }
4
+ function looksLikeSearchSelector(selector) {
5
+ const normalized = selector.toLowerCase();
6
+ return /\b(search|query|keywords?)\b/.test(normalized)
7
+ || /\[name=['"]q['"]\]/.test(normalized)
8
+ || /\[type=['"]search['"]\]/.test(normalized);
9
+ }
10
+ function extractQueryKey(action) {
11
+ if (action.action !== 'type')
12
+ return null;
13
+ if (!looksLikeSearchSelector(action.selector))
14
+ return null;
15
+ const text = normalizeWhitespace(action.text);
16
+ if (!text)
17
+ return null;
18
+ return `${action.selector.toLowerCase()}::${text}`;
19
+ }
20
+ export function countRepeatedQueries(turns) {
21
+ const seen = new Set();
22
+ let repeated = 0;
23
+ for (const turn of turns) {
24
+ const key = extractQueryKey(turn.action);
25
+ if (!key)
26
+ continue;
27
+ if (seen.has(key)) {
28
+ repeated++;
29
+ continue;
30
+ }
31
+ seen.add(key);
32
+ }
33
+ return repeated;
34
+ }
35
+ export function deriveWasteMetrics(turns, verificationRejectionCount, firstSufficientEvidenceTurn) {
36
+ const effectiveEvidenceTurn = firstSufficientEvidenceTurn && firstSufficientEvidenceTurn > 0
37
+ ? firstSufficientEvidenceTurn
38
+ : undefined;
39
+ return {
40
+ repeatedQueryCount: countRepeatedQueries(turns),
41
+ verificationRejectionCount,
42
+ turnsAfterSufficientEvidence: effectiveEvidenceTurn
43
+ ? Math.max(0, turns.length - effectiveEvidenceTurn)
44
+ : 0,
45
+ errorTurns: turns.filter((turn) => Boolean(turn.error)).length,
46
+ };
47
+ }
48
+ //# sourceMappingURL=run-metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-metrics.js","sourceRoot":"","sources":["../src/run-metrics.ts"],"names":[],"mappings":"AAEA,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,uBAAuB,CAAC,QAAgB;IAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC1C,OAAO,8BAA8B,CAAC,IAAI,CAAC,UAAU,CAAC;WACjD,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;WACrC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,QAAQ,EAAE,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,0BAAkC,EAClC,2BAAoC;IAEpC,MAAM,qBAAqB,GAAG,2BAA2B,IAAI,2BAA2B,GAAG,CAAC;QAC1F,CAAC,CAAC,2BAA2B;QAC7B,CAAC,CAAC,SAAS,CAAC;IAEd,OAAO;QACL,kBAAkB,EAAE,oBAAoB,CAAC,KAAK,CAAC;QAC/C,0BAA0B;QAC1B,4BAA4B,EAAE,qBAAqB;YACjD,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;KAC/D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * RunState — encapsulates loop state variables for the agent run loop.
3
+ *
4
+ * Extracted from runner.ts to reduce scattered mutable state in the main loop.
5
+ */
6
+ export declare class RunState {
7
+ consecutiveErrors: number;
8
+ totalErrors: number;
9
+ verificationRejectionCount: number;
10
+ firstSufficientEvidenceTurn: number | undefined;
11
+ supervisorInterventions: number;
12
+ lastSupervisorTurn: number;
13
+ goalVerificationEvidence: string[];
14
+ searchScoutUrls: Set<string>;
15
+ readonly maxTotalErrors: number;
16
+ constructor(maxTurns: number);
17
+ recordError(): void;
18
+ clearConsecutiveErrors(): void;
19
+ get isErrorBudgetExhausted(): boolean;
20
+ get hasConsecutiveErrorThreshold(): boolean;
21
+ }
22
+ //# sourceMappingURL=run-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-state.d.ts","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qBAAa,QAAQ;IACnB,iBAAiB,SAAK;IACtB,WAAW,SAAK;IAChB,0BAA0B,SAAK;IAC/B,2BAA2B,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,uBAAuB,SAAK;IAC5B,kBAAkB,SAAa;IAC/B,wBAAwB,EAAE,MAAM,EAAE,CAAM;IACxC,eAAe,cAAqB;IAEpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;gBAEpB,QAAQ,EAAE,MAAM;IAI5B,WAAW,IAAI,IAAI;IAKnB,sBAAsB,IAAI,IAAI;IAI9B,IAAI,sBAAsB,IAAI,OAAO,CAEpC;IAED,IAAI,4BAA4B,IAAI,OAAO,CAE1C;CACF"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * RunState — encapsulates loop state variables for the agent run loop.
3
+ *
4
+ * Extracted from runner.ts to reduce scattered mutable state in the main loop.
5
+ */
6
+ export class RunState {
7
+ consecutiveErrors = 0;
8
+ totalErrors = 0;
9
+ verificationRejectionCount = 0;
10
+ firstSufficientEvidenceTurn;
11
+ supervisorInterventions = 0;
12
+ lastSupervisorTurn = -Infinity;
13
+ goalVerificationEvidence = [];
14
+ searchScoutUrls = new Set();
15
+ maxTotalErrors;
16
+ constructor(maxTurns) {
17
+ this.maxTotalErrors = Math.max(3, Math.ceil(maxTurns / 3));
18
+ }
19
+ recordError() {
20
+ this.consecutiveErrors++;
21
+ this.totalErrors++;
22
+ }
23
+ clearConsecutiveErrors() {
24
+ this.consecutiveErrors = 0;
25
+ }
26
+ get isErrorBudgetExhausted() {
27
+ return this.totalErrors >= this.maxTotalErrors;
28
+ }
29
+ get hasConsecutiveErrorThreshold() {
30
+ return this.consecutiveErrors >= 3;
31
+ }
32
+ }
33
+ //# sourceMappingURL=run-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-state.js","sourceRoot":"","sources":["../src/run-state.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,OAAO,QAAQ;IACnB,iBAAiB,GAAG,CAAC,CAAC;IACtB,WAAW,GAAG,CAAC,CAAC;IAChB,0BAA0B,GAAG,CAAC,CAAC;IAC/B,2BAA2B,CAAqB;IAChD,uBAAuB,GAAG,CAAC,CAAC;IAC5B,kBAAkB,GAAG,CAAC,QAAQ,CAAC;IAC/B,wBAAwB,GAAa,EAAE,CAAC;IACxC,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAE3B,cAAc,CAAS;IAEhC,YAAY,QAAgB;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW;QACT,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC;IACjD,CAAC;IAED,IAAI,4BAA4B;QAC9B,OAAO,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC;IACrC,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Goal verification — helpers for verifying completion claims, search workflow
3
+ * evidence collection, and script-backed completion acceptance.
4
+ */
5
+ import type { PageState } from '../types.js';
6
+ export declare function buildGoalVerificationClaim(claimedResult: string, evidence: string[]): string;
7
+ export declare function collectSearchWorkflowEvidence(goal: string, claimedResult: string, turns: Array<{
8
+ state: PageState;
9
+ }>): string[];
10
+ export declare function shouldAcceptSearchWorkflowCompletion(goal: string, verification: import('../types.js').GoalVerification, claimedResult: string, evidence: string[]): boolean;
11
+ export declare function shouldAcceptScriptBackedCompletion(goal: string, state: PageState, verification: import('../types.js').GoalVerification, claimedResult: string, evidence: string[]): boolean;
12
+ export declare function detectCompletionContentTypeMismatch(goal: string, state: PageState, claimedResult: string, evidence: string[]): string | undefined;
13
+ //# sourceMappingURL=goal-verification.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-verification.d.ts","sourceRoot":"","sources":["../../src/runner/goal-verification.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAa7C,wBAAgB,0BAA0B,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAoB5F;AAED,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC,GACjC,MAAM,EAAE,CAwCV;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,OAAO,aAAa,EAAE,gBAAgB,EACpD,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAyBT;AAED,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE,OAAO,aAAa,EAAE,gBAAgB,EACpD,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CA8CT;AAED,wBAAgB,mCAAmC,CACjD,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,EAChB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAAE,GACjB,MAAM,GAAG,SAAS,CAmBpB"}
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Goal verification — helpers for verifying completion claims, search workflow
3
+ * evidence collection, and script-backed completion acceptance.
4
+ */
5
+ import { requiresSearchWorkflowEvidence, requiresPressReleaseLikeContent, normalizeLooseText, extractRelevantSnapshotExcerpt, NON_RELEASE_CONTENT_RE, NON_RELEASE_URL_RE, PRESS_RELEASE_RE, } from './utils.js';
6
+ const MAX_GOAL_VERIFICATION_EVIDENCE = 5;
7
+ export function buildGoalVerificationClaim(claimedResult, evidence) {
8
+ const cleanClaim = claimedResult.trim();
9
+ if (evidence.length === 0) {
10
+ return cleanClaim;
11
+ }
12
+ const recentEvidence = evidence
13
+ .slice(-MAX_GOAL_VERIFICATION_EVIDENCE)
14
+ .map((entry) => entry.trim())
15
+ .filter(Boolean);
16
+ if (recentEvidence.length === 0) {
17
+ return cleanClaim;
18
+ }
19
+ return [
20
+ cleanClaim,
21
+ 'SUPPLEMENTAL TOOL EVIDENCE:',
22
+ ...recentEvidence,
23
+ ].filter(Boolean).join('\n\n');
24
+ }
25
+ export function collectSearchWorkflowEvidence(goal, claimedResult, turns) {
26
+ if (!requiresSearchWorkflowEvidence(goal))
27
+ return [];
28
+ const queries = Array.from(goal.matchAll(/"([^"]{3,})"/g))
29
+ .map((match) => match[1]?.trim())
30
+ .filter((query) => Boolean(query));
31
+ if (queries.length === 0)
32
+ return [];
33
+ const claimedTitle = claimedResult.match(/(?:^|\n)\s*title:\s*(.+)/i)?.[1]?.trim();
34
+ const claimedDate = claimedResult.match(/(?:^|\n)\s*(?:publication )?date:\s*(.+)/i)?.[1]?.trim();
35
+ const normalizedTitle = claimedTitle ? normalizeLooseText(claimedTitle) : '';
36
+ const normalizedDate = claimedDate?.toLowerCase() ?? '';
37
+ for (let index = turns.length - 1; index >= 0; index -= 1) {
38
+ const priorState = turns[index]?.state;
39
+ if (!priorState)
40
+ continue;
41
+ const snapshot = priorState.snapshot;
42
+ const snapshotLower = snapshot.toLowerCase();
43
+ const matchedQuery = queries.find((query) => snapshotLower.includes(`[value="${query.toLowerCase()}"]`));
44
+ if (!matchedQuery)
45
+ continue;
46
+ const hasTitle = Boolean(normalizedTitle) && normalizeLooseText(snapshot).includes(normalizedTitle);
47
+ const hasDate = Boolean(normalizedDate) && snapshotLower.includes(normalizedDate);
48
+ if (!hasTitle && !hasDate)
49
+ continue;
50
+ const relevantTerms = [matchedQuery, claimedTitle, claimedDate].filter((term) => Boolean(term));
51
+ return [
52
+ [
53
+ 'SEARCH WORKFLOW EVIDENCE:',
54
+ `URL: ${priorState.url}`,
55
+ `Query visible in site search: ${matchedQuery}`,
56
+ hasTitle && claimedTitle ? `Visible title evidence: ${claimedTitle}` : undefined,
57
+ hasDate && claimedDate ? `Visible date evidence: ${claimedDate}` : undefined,
58
+ `Snapshot excerpt:\n${extractRelevantSnapshotExcerpt(snapshot, relevantTerms)}`,
59
+ ].filter(Boolean).join('\n'),
60
+ ];
61
+ }
62
+ return [];
63
+ }
64
+ export function shouldAcceptSearchWorkflowCompletion(goal, verification, claimedResult, evidence) {
65
+ if (verification.achieved)
66
+ return false;
67
+ if (!requiresSearchWorkflowEvidence(goal))
68
+ return false;
69
+ const verifierText = [...verification.evidence, ...verification.missing].join('\n').toLowerCase();
70
+ const missingSearchState = [
71
+ /search feature/,
72
+ /search field/,
73
+ /field is empty/,
74
+ /current final page state/,
75
+ /filtered search-results state/,
76
+ /search-results state/,
77
+ /using the site's search/,
78
+ ].some((pattern) => pattern.test(verifierText));
79
+ if (!missingSearchState)
80
+ return false;
81
+ const searchEvidence = evidence.find((entry) => entry.startsWith('SEARCH WORKFLOW EVIDENCE:'));
82
+ if (!searchEvidence)
83
+ return false;
84
+ const claimLower = claimedResult.toLowerCase();
85
+ return (/title:\s*/i.test(claimedResult)
86
+ && /date:\s*/i.test(claimedResult)
87
+ && (claimLower.includes('http://') || claimLower.includes('https://')));
88
+ }
89
+ export function shouldAcceptScriptBackedCompletion(goal, state, verification, claimedResult, evidence) {
90
+ if (verification.achieved)
91
+ return false;
92
+ const verifierText = [...verification.evidence, ...verification.missing].join('\n').toLowerCase();
93
+ const visibilityLimited = [
94
+ /accessibility tree/,
95
+ /not visible/,
96
+ /not shown/,
97
+ /cannot verify/,
98
+ /not present/,
99
+ /visible publication date/,
100
+ /no .* visible/,
101
+ /does not show/,
102
+ /missing/,
103
+ /not found/,
104
+ /not currently/,
105
+ ].some((pattern) => pattern.test(verifierText));
106
+ if (!visibilityLimited)
107
+ return false;
108
+ const scriptEvidence = evidence
109
+ .filter((entry) => entry.startsWith('SCRIPT RESULT:'))
110
+ .join('\n');
111
+ if (!scriptEvidence)
112
+ return false;
113
+ const claimLower = claimedResult.toLowerCase();
114
+ const hasUrlEvidence = state.url.length > 0 && claimLower.includes(state.url.toLowerCase());
115
+ // Also accept if the claim references ANY URL (agent may have navigated away from extraction page)
116
+ const hasAnyUrlEvidence = /https?:\/\/[^\s]+/.test(claimLower);
117
+ const combinedEvidence = `${state.url}\n${state.title}\n${claimLower}\n${scriptEvidence}\n${verifierText}`.toLowerCase();
118
+ if (requiresPressReleaseLikeContent(goal)) {
119
+ const explicitlyNotRelease = /\bnot a press release page\b|\bnot a press release\b/.test(verifierText);
120
+ const releaseLikeEvidence = PRESS_RELEASE_RE.test(combinedEvidence) || /\/news-releases?\//.test(combinedEvidence);
121
+ if (explicitlyNotRelease || !releaseLikeEvidence) {
122
+ return false;
123
+ }
124
+ }
125
+ const tokenMatches = scriptEvidence.match(/[A-Z][a-z]+ \d{1,2}, \d{4}|\b\d{4}\b|\"[^\"]{6,}\"/g) ?? [];
126
+ const normalizedTokens = tokenMatches
127
+ .map((token) => token.replace(/^"|"$/g, '').trim().toLowerCase())
128
+ .filter((token, index, all) => token.length >= 4 && all.indexOf(token) === index);
129
+ const overlappingTokens = normalizedTokens.filter((token) => claimLower.includes(token));
130
+ // Accept if: (current URL in claim OR any URL in claim) AND script evidence overlaps with claim
131
+ return (hasUrlEvidence || hasAnyUrlEvidence) && overlappingTokens.length >= 1;
132
+ }
133
+ export function detectCompletionContentTypeMismatch(goal, state, claimedResult, evidence) {
134
+ if (!requiresPressReleaseLikeContent(goal))
135
+ return undefined;
136
+ const combined = [
137
+ state.url,
138
+ state.title,
139
+ state.snapshot,
140
+ claimedResult,
141
+ ...evidence,
142
+ ].join('\n').toLowerCase();
143
+ const releaseLike = PRESS_RELEASE_RE.test(combined) || /\/news-releases?\//.test(combined);
144
+ if (releaseLike)
145
+ return undefined;
146
+ const mismatchedContent = NON_RELEASE_CONTENT_RE.test(combined)
147
+ || NON_RELEASE_URL_RE.test(combined);
148
+ if (!mismatchedContent)
149
+ return undefined;
150
+ return 'The current page/result is not a press release or news release. Continue until the completion evidence points to an actual release page or release listing.';
151
+ }
152
+ //# sourceMappingURL=goal-verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-verification.js","sourceRoot":"","sources":["../../src/runner/goal-verification.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Runner barrel — re-exports all public symbols from the runner submodules.
3
+ */
4
+ export { AgentRunner, runAgent } from './runner.js';
5
+ export type { RunnerOptions } from './runner.js';
6
+ export { withRetry } from './utils.js';
7
+ export { buildSearchResultsGuidance, rankSearchCandidates, buildVisibleLinkRecommendation, getVisibleLinkRecommendation, getRankedVisibleLinkCandidates, } from './search-guidance.js';
8
+ export { buildGoalVerificationClaim, collectSearchWorkflowEvidence, shouldAcceptSearchWorkflowCompletion, shouldAcceptScriptBackedCompletion, detectCompletionContentTypeMismatch, } from './goal-verification.js';
9
+ export { detectAiTangleVerifiedOutputState, detectAiTanglePartnerTemplateVisibleState, } from './page-analysis.js';
10
+ export { shouldUseVisibleLinkScout, shouldUseVisibleLinkScoutPage, shouldUseBoundedBranchExplorer, scoreBranchPreview, } from './scout.js';
11
+ export { chooseVisibleLinkOverride, chooseScoutLinkOverride, chooseBranchLinkOverride, chooseSearchResultsNewsTabOverride, chooseSearchQueryOverride, chooseNewsReleasesHubOverride, chooseVisibleNewsReleaseResultOverride, chooseVisibleSearchResultOverride, chooseExpandableListCompletionOverride, } from './overrides.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runner/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,oCAAoC,EACpC,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EACL,iCAAiC,EACjC,yCAAyC,GAC1C,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,kCAAkC,EAClC,yBAAyB,EACzB,6BAA6B,EAC7B,sCAAsC,EACtC,iCAAiC,EACjC,sCAAsC,GACvC,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Runner barrel — re-exports all public symbols from the runner submodules.
3
+ */
4
+ // Core runner
5
+ export { AgentRunner, runAgent } from './runner.js';
6
+ // Utilities
7
+ export { withRetry } from './utils.js';
8
+ // Search guidance
9
+ export { buildSearchResultsGuidance, rankSearchCandidates, buildVisibleLinkRecommendation, getVisibleLinkRecommendation, getRankedVisibleLinkCandidates, } from './search-guidance.js';
10
+ // Goal verification
11
+ export { buildGoalVerificationClaim, collectSearchWorkflowEvidence, shouldAcceptSearchWorkflowCompletion, shouldAcceptScriptBackedCompletion, detectCompletionContentTypeMismatch, } from './goal-verification.js';
12
+ // Page analysis
13
+ export { detectAiTangleVerifiedOutputState, detectAiTanglePartnerTemplateVisibleState, } from './page-analysis.js';
14
+ // Scout
15
+ export { shouldUseVisibleLinkScout, shouldUseVisibleLinkScoutPage, shouldUseBoundedBranchExplorer, scoreBranchPreview, } from './scout.js';
16
+ // Overrides
17
+ export { chooseVisibleLinkOverride, chooseScoutLinkOverride, chooseBranchLinkOverride, chooseSearchResultsNewsTabOverride, chooseSearchQueryOverride, chooseNewsReleasesHubOverride, chooseVisibleNewsReleaseResultOverride, chooseVisibleSearchResultOverride, chooseExpandableListCompletionOverride, } from './overrides.js';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runner/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc;AACd,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGpD,YAAY;AACZ,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,kBAAkB;AAClB,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,8BAA8B,EAC9B,4BAA4B,EAC5B,8BAA8B,GAC/B,MAAM,sBAAsB,CAAC;AAE9B,oBAAoB;AACpB,OAAO,EACL,0BAA0B,EAC1B,6BAA6B,EAC7B,oCAAoC,EACpC,kCAAkC,EAClC,mCAAmC,GACpC,MAAM,wBAAwB,CAAC;AAEhC,gBAAgB;AAChB,OAAO,EACL,iCAAiC,EACjC,yCAAyC,GAC1C,MAAM,oBAAoB,CAAC;AAE5B,QAAQ;AACR,OAAO,EACL,yBAAyB,EACzB,6BAA6B,EAC7B,8BAA8B,EAC9B,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,YAAY;AACZ,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,kCAAkC,EAClC,yBAAyB,EACzB,6BAA6B,EAC7B,sCAAsC,EACtC,iCAAiC,EACjC,sCAAsC,GACvC,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Override producers — post-decision action overrides for the runner pipeline.
3
+ */
4
+ import type { Action, PageState } from '../types.js';
5
+ import type { OverrideProducer } from '../override-pipeline.js';
6
+ /**
7
+ * Build the ordered list of override producers for the post-decision pipeline.
8
+ * Each producer wraps one of the existing choose* functions and returns a scored
9
+ * OverrideCandidate, or undefined if the override does not apply.
10
+ */
11
+ export declare function buildOverrideProducers(): OverrideProducer[];
12
+ export declare function chooseVisibleLinkOverride(state: PageState, action: Action, recommendation: {
13
+ ref: string;
14
+ text: string;
15
+ score: number;
16
+ } | undefined): {
17
+ ref: string;
18
+ feedback: string;
19
+ } | undefined;
20
+ export declare function chooseScoutLinkOverride(state: PageState, action: Action, recommendation: {
21
+ ref: string;
22
+ text: string;
23
+ confidence: number;
24
+ reasoning: string;
25
+ } | undefined): {
26
+ ref: string;
27
+ feedback: string;
28
+ } | undefined;
29
+ export declare function chooseBranchLinkOverride(state: PageState, action: Action, recommendation: {
30
+ ref: string;
31
+ text: string;
32
+ confidence: number;
33
+ reasoning: string;
34
+ } | undefined): {
35
+ ref: string;
36
+ feedback: string;
37
+ } | undefined;
38
+ export declare function buildScoutLinkRecommendationText(recommendation: {
39
+ ref: string;
40
+ text: string;
41
+ confidence: number;
42
+ reasoning: string;
43
+ }): string;
44
+ export declare function buildBranchLinkRecommendationText(recommendation: {
45
+ ref: string;
46
+ text: string;
47
+ confidence: number;
48
+ reasoning: string;
49
+ }): string;
50
+ export declare function chooseSearchResultsNewsTabOverride(state: PageState, goal: string, action: Action): {
51
+ ref: string;
52
+ feedback: string;
53
+ } | undefined;
54
+ export declare function chooseSearchQueryOverride(state: PageState, goal: string, action: Action): {
55
+ selector: string;
56
+ query: string;
57
+ feedback: string;
58
+ } | undefined;
59
+ export declare function chooseNewsReleasesHubOverride(state: PageState, goal: string, action: Action): {
60
+ ref: string;
61
+ feedback: string;
62
+ } | undefined;
63
+ export declare function chooseVisibleNewsReleaseResultOverride(state: PageState, goal: string, action: Action): {
64
+ ref: string;
65
+ feedback: string;
66
+ } | undefined;
67
+ export declare function chooseVisibleSearchResultOverride(state: PageState, goal: string, allowedDomains: string[] | undefined, action: Action): {
68
+ ref: string;
69
+ feedback: string;
70
+ } | undefined;
71
+ export declare function chooseExpandableListCompletionOverride(state: PageState, goal: string, action: Action): {
72
+ ref: string;
73
+ feedback: string;
74
+ } | undefined;
75
+ //# sourceMappingURL=overrides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../src/runner/overrides.ts"],"names":[],"mappings":"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"}