zan-browser 3.0.65 → 3.0.67

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.
@@ -40,7 +40,6 @@ export declare class AgentLoop {
40
40
  private maybeSynthetic;
41
41
  private appendStepResult;
42
42
  private url;
43
- private extractHostname;
44
43
  private result;
45
44
  }
46
45
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAMrD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3D,OAAO,EAAE,cAAc,EAAqB,MAAM,mBAAmB,CAAC;AAgBtE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,OAAO,eAAe,EAAE,UAAU,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,eAAe,EAAE,CAAC;CACrC;AAID,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,YAAY,CAAS;gBAG3B,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,cAAc,EACrB,YAAY,CAAC,EAAE,mBAAmB;IAW9B,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IA8KpD,OAAO,CAAC,mBAAmB;YAeb,MAAM;IA8CpB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,GAAG;IAEX,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,MAAM;CAGf"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAMrD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAI3D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAanD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,EAAE,OAAO,eAAe,EAAE,UAAU,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,eAAe,EAAE,CAAC;CACrC;AAID,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,YAAY,CAAS;gBAG3B,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,KAAK,EAAE,cAAc,EACrB,YAAY,CAAC,EAAE,mBAAmB;IAW9B,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAiHpD,OAAO,CAAC,mBAAmB;YAeb,MAAM;IA8CpB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,GAAG;IAEX,OAAO,CAAC,MAAM;CAGf"}
@@ -16,16 +16,13 @@ const validation_1 = require("./validation");
16
16
  const parser_1 = require("./parser");
17
17
  const crypto_1 = require("crypto");
18
18
  const planner_1 = require("./planner");
19
- const discovery_state_1 = require("./discovery-state");
19
+ const enforcement_1 = require("./enforcement");
20
+ const state_updater_1 = require("./state-updater");
21
+ const extraction_1 = require("./extraction");
20
22
  // Tools whose output should be injected as synthetic requests
21
23
  const SYNTHETIC_TOOLS = new Set(["scrape", "extract_dom", "download_file"]);
22
24
  const FALLBACK_MODEL = "claude-sonnet-4-6";
23
25
  const HARD_MAX_STEPS = 50;
24
- // Mechanical thresholds
25
- const FETCH_WITHOUT_SIGNAL_LIMIT = 5;
26
- const DOMAIN_EXHAUSTION_STEPS = 7;
27
- const DOMAIN_EXHAUSTION_MIN_SCORE = 35;
28
- const USEFUL_XHR_MIN_SCORE = 40;
29
26
  // ─── Agent ───────────────────────────────────────────────────────────────────
30
27
  class AgentLoop {
31
28
  client;
@@ -71,127 +68,59 @@ class AgentLoop {
71
68
  progress(`Agent: impossible — ${decision.reasoning}`);
72
69
  return this.result(false, steps, decision.reasoning);
73
70
  }
74
- // 4. PRE-EXECUTION enforcement ─────────────────────────────────────────
75
- // 4a. Dead/exhausted domain check for navigate/fetch_url
76
- if ((decision.tool_name === "navigate" || decision.tool_name === "fetch_url") && decision.params.url) {
77
- const hostname = this.extractHostname(String(decision.params.url));
78
- if (hostname && this.state.isDead(hostname)) {
79
- const blocked = { success: false, summary: `Domain blocked: connection error on previous attempt`, error: `Domain ${hostname} is permanently unreachable` };
80
- steps.push({ step: i + 1, toolName: decision.tool_name, params: decision.params, result: blocked, reasoning: decision.reasoning });
81
- progress(`Step ${i + 1}: ${decision.tool_name} → blocked (dead domain: ${hostname})`);
82
- this.conversation.append("user", `Domain ${hostname} is permanently unreachable (connection error on a previous attempt). Do not attempt to visit it again. Remove it from your plan and choose a different source.`);
83
- this.state.totalSteps++;
84
- continue;
85
- }
86
- if (hostname && this.state.isExhausted(hostname)) {
87
- const blocked = { success: false, summary: `Domain exhausted: many steps without useful signal`, error: `Domain ${hostname} has been exhausted without finding useful data` };
88
- steps.push({ step: i + 1, toolName: decision.tool_name, params: decision.params, result: blocked, reasoning: decision.reasoning });
89
- progress(`Step ${i + 1}: ${decision.tool_name} → blocked (exhausted domain: ${hostname})`);
90
- this.conversation.append("user", `Domain ${hostname} has been explored extensively without finding useful API signal. Try a completely different site or source.`);
91
- this.state.totalSteps++;
92
- continue;
93
- }
94
- }
95
- // 4b. Consecutive fetch_url without signal limit
96
- if (decision.tool_name === "fetch_url" && this.state.consecutiveFetchWithoutSignal >= FETCH_WITHOUT_SIGNAL_LIMIT) {
97
- const blocked = { success: false, summary: `fetch_url blocked: ${FETCH_WITHOUT_SIGNAL_LIMIT} consecutive calls without useful signal`, error: "fetch limit reached" };
98
- steps.push({ step: i + 1, toolName: decision.tool_name, params: decision.params, result: blocked, reasoning: decision.reasoning });
99
- progress(`Step ${i + 1}: fetch_url → blocked (${FETCH_WITHOUT_SIGNAL_LIMIT} consecutive without signal)`);
100
- this.conversation.append("user", `You have made ${FETCH_WITHOUT_SIGNAL_LIMIT} consecutive fetch_url calls without finding useful data. Stop probing URLs and change approach: navigate to a real website, interact with it, and inspect network traffic or JS source to find real endpoints.`);
71
+ // 3. PRE-EXECUTION enforcement
72
+ const enforcement = (0, enforcement_1.checkEnforcement)(decision, this.state);
73
+ if (enforcement) {
74
+ steps.push({ step: i + 1, toolName: decision.tool_name, params: decision.params, result: enforcement.result, reasoning: decision.reasoning });
75
+ progress(`Step ${i + 1}: ${decision.tool_name} → blocked`);
76
+ this.conversation.append("user", enforcement.message);
101
77
  this.state.totalSteps++;
102
78
  continue;
103
79
  }
104
- // 5. Execute tool ──────────────────────────────────────────────────────
80
+ // 4. Execute tool
105
81
  const res = await this.registry.execute(decision.tool_name, decision.params, this.ctx);
106
82
  steps.push({ step: i + 1, toolName: decision.tool_name, params: decision.params, result: res, reasoning: decision.reasoning });
107
83
  progress(`Step ${i + 1}: ${decision.tool_name} → ${res.success ? "ok" : `error: ${res.error ?? res.summary}`}`);
108
- // 6. POST-EXECUTION state updates ──────────────────────────────────────
109
- const isNavOrFetch = decision.tool_name === "navigate" || decision.tool_name === "fetch_url";
110
- const actionUrl = isNavOrFetch ? String(decision.params.url ?? "") : "";
111
- const actionHostname = actionUrl ? this.extractHostname(actionUrl) : null;
112
- // 6a. Connection error mark dead
113
- if (!res.success && isNavOrFetch && actionUrl) {
114
- const errMsg = String(res.error ?? res.summary ?? "");
115
- if ((0, discovery_state_1.isConnectionError)(errMsg) && actionHostname) {
116
- this.state.markDead(actionHostname);
117
- progress(`Dead domain detected: ${actionHostname}`);
118
- }
119
- }
120
- // 6b. fetch_url signal tracking
121
- // Counter only resets on real XHR signal or active search — not on navigate
122
- if (decision.tool_name === "fetch_url") {
123
- const topXhr = this.ctx.interceptor?.getUseful(USEFUL_XHR_MIN_SCORE)?.[0];
124
- const hadNewSignal = topXhr && (!this.state.bestSignal || topXhr.score > this.state.bestSignal.score);
125
- if (hadNewSignal) {
126
- this.state.resetFetchCounter();
127
- }
128
- else {
129
- this.state.incrementFetchWithoutSignal();
130
- if (actionUrl && !res.success) {
131
- this.state.triedEndpoints.set(actionUrl, String(res.error ?? "request failed"));
84
+ // 5. POST-EXECUTION state updates
85
+ (0, state_updater_1.updateState)({ decision, res, state: this.state, steps, ctx: this.ctx, progress });
86
+ // 6. Inject synthetic request for content-extraction tools
87
+ this.maybeSynthetic(decision.tool_name, res);
88
+ // 7. Feed result + progress summary
89
+ const summary = (0, progress_1.buildProgressSummary)(steps, startTime, suggestedBudget, this.ctx.interceptor, this.url(), this.state);
90
+ this.appendStepResult(decision, res, summary);
91
+ // 8. Auto-observe + extraction after navigating to a seed-matching URL
92
+ if (decision.tool_name === "navigate" && res.success) {
93
+ const navUrl = String(decision.params.url ?? "").toLowerCase();
94
+ const urlHasSeed = (config.seedValues ?? []).some((s) => navUrl.includes(s.exampleValue.toLowerCase()));
95
+ if (urlHasSeed) {
96
+ const pageUrl = this.url();
97
+ progress(`Auto-extraction on seed page: ${pageUrl}`);
98
+ const extracted = await (0, extraction_1.tryExtraction)(pageUrl, config.seedValues ?? [], this.registry, this.ctx, this.conversation);
99
+ if (extracted) {
100
+ progress(`Extraction succeeded: ${extracted.data.length} chars`);
101
+ // Inject as synthetic DOM extraction request
102
+ if (this.ctx.interceptor) {
103
+ this.ctx.interceptor.injectSynthetic({
104
+ id: (0, crypto_1.randomUUID)(), method: "GET", url: extracted.url,
105
+ requestHeaders: {}, responseBody: extracted.data, contentType: "text/html",
106
+ score: 70, isXHR: false, isAsset: false, timestamp: Date.now(), isDomExtraction: true,
107
+ });
108
+ }
109
+ this.conversation.append("user", `[Auto-extraction] Successfully extracted data from seed page ${extracted.url} (${extracted.data.length} chars). ` +
110
+ "The data has been captured. Set data_found=true and declare done.");
132
111
  }
133
- }
134
- }
135
- else if (decision.tool_name === "web_search") {
136
- // Active search = genuine strategy change
137
- this.state.resetFetchCounter();
138
- }
139
- else {
140
- // For all other tools: only reset if a new useful XHR appeared
141
- const topXhr = this.ctx.interceptor?.getUseful(USEFUL_XHR_MIN_SCORE)?.[0];
142
- const hadNewSignal = topXhr && (!this.state.bestSignal || topXhr.score > this.state.bestSignal.score);
143
- if (hadNewSignal) {
144
- this.state.resetFetchCounter();
145
- }
146
- }
147
- // 6c. Update best signal from interceptor
148
- const currentTop = this.ctx.interceptor?.getUseful(1)?.[0];
149
- if (currentTop) {
150
- this.state.updateBestSignal(currentTop.score, currentTop.url);
151
- }
152
- // 6d. Track domain steps
153
- if (isNavOrFetch && actionHostname) {
154
- this.state.incrementStepsForDomain(actionHostname);
155
- this.state.visitedDomains.add(actionHostname);
156
- }
157
- if (decision.tool_name === "fetch_url" && res.success && actionHostname) {
158
- this.state.visitedDomains.add(actionHostname);
159
- }
160
- // 6e. Domain exhaustion check
161
- if (actionHostname) {
162
- const domainSteps = this.state.stepsByDomain.get(actionHostname) ?? 0;
163
- if (domainSteps >= DOMAIN_EXHAUSTION_STEPS) {
164
- // Check best XHR score for this specific domain
165
- const domainRequests = this.ctx.interceptor?.getAll().filter((r) => {
112
+ else {
113
+ // Extraction failed — still provide observe context if possible
166
114
  try {
167
- return new URL(r.url).hostname === actionHostname;
168
- }
169
- catch {
170
- return false;
115
+ const obsRes = await this.registry.execute("observe", {}, this.ctx);
116
+ if (obsRes.success) {
117
+ this.conversation.append("user", `[Auto-observe] The page you navigated to contains a seed value. Here is what the page looks like:\n${obsRes.summary}\n\nIf you see the data you need in the DOM, use scrape as your next action.`);
118
+ }
171
119
  }
172
- }) ?? [];
173
- const bestDomainScore = domainRequests.reduce((max, r) => Math.max(max, r.score), 0);
174
- const hadSuccessfulFetch = steps.some((s) => s.toolName === "fetch_url" &&
175
- s.result.success &&
176
- s.params.url &&
177
- this.extractHostname(String(s.params.url)) === actionHostname &&
178
- String(s.result.summary ?? "").length > 200);
179
- if (hadSuccessfulFetch) {
180
- // domain is producing data via fetch_url — don't mark as exhausted
181
- }
182
- else if (bestDomainScore < DOMAIN_EXHAUSTION_MIN_SCORE) {
183
- this.state.markExhausted(actionHostname);
184
- progress(`Exhausted domain: ${actionHostname} (${domainSteps} steps, best score ${bestDomainScore})`);
120
+ catch { /* non-fatal */ }
185
121
  }
186
122
  }
187
123
  }
188
- // 6f. Increment total steps
189
- this.state.totalSteps++;
190
- // 7. Inject synthetic request for content-extraction tools
191
- this.maybeSynthetic(decision.tool_name, res);
192
- // 8. Feed result + progress summary
193
- const summary = (0, progress_1.buildProgressSummary)(steps, startTime, suggestedBudget, this.ctx.interceptor, this.url(), this.state);
194
- this.appendStepResult(decision, res, summary);
195
124
  // 9. data_found (post-execution) — validate after tool has run
196
125
  if (decision.data_found) {
197
126
  const v = await (0, validation_1.runValidationStep)(steps, this.ctx, this.registry, this.conversation, progress);
@@ -286,14 +215,6 @@ class AgentLoop {
286
215
  }
287
216
  }
288
217
  url() { return this.ctx.page?.url() ?? "unknown"; }
289
- extractHostname(url) {
290
- try {
291
- return new URL(url).hostname;
292
- }
293
- catch {
294
- return null;
295
- }
296
- }
297
218
  result(success, steps, reason) {
298
219
  return { success, steps, finalUrl: this.url(), reason, capturedRequests: this.ctx.interceptor?.getUseful(3) ?? [] };
299
220
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/agent/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { ToolContext } from "../tools/base";
2
+ import type { AgentResult } from "./agent";
3
+ import type { DiscoveryState } from "./discovery-state";
4
+ import type { EndpointResult } from "./orchestrator";
5
+ import type { SeedValue } from "../types";
6
+ export interface CandidateEvaluatorInput {
7
+ agentResult: AgentResult;
8
+ state: DiscoveryState;
9
+ seedValues: SeedValue[];
10
+ ctx: ToolContext;
11
+ }
12
+ export declare function evaluateResult(input: CandidateEvaluatorInput): EndpointResult | null;
13
+ //# sourceMappingURL=candidate-evaluator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidate-evaluator.d.ts","sourceRoot":"","sources":["../../src/agent/candidate-evaluator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,UAAU,CAAC;AAE3D,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,GAAG,EAAE,WAAW,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,uBAAuB,GAAG,cAAc,GAAG,IAAI,CAwJpF"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ // ─── Candidate evaluator ─────────────────────────────────────────────────────
3
+ // Evaluates an agent run's results to find the best reproducible endpoint.
4
+ // Implements 4 candidate paths + sorting by parameterizability.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.evaluateResult = evaluateResult;
7
+ function evaluateResult(input) {
8
+ const { agentResult, state, seedValues, ctx } = input;
9
+ // Build set of URLs the agent explicitly tested via fetch_url with success
10
+ const verifiedUrls = new Set();
11
+ for (const step of agentResult.steps) {
12
+ if (step.toolName === "fetch_url" && step.result.success && step.params.url) {
13
+ verifiedUrls.add(String(step.params.url));
14
+ }
15
+ }
16
+ const candidates = [];
17
+ const allCaptured = [
18
+ ...agentResult.capturedRequests,
19
+ ...(ctx.interceptor?.getAll() ?? []),
20
+ ];
21
+ // Deduplicate by URL
22
+ const seenUrls = new Set();
23
+ // Path 1: fetch_url verified endpoints with score >= 50
24
+ for (const url of verifiedUrls) {
25
+ const match = allCaptured.find((r) => r.url === url && !r.isDomExtraction && !r.isAsset && r.score >= 50);
26
+ if (match && !seenUrls.has(url)) {
27
+ candidates.push(match);
28
+ seenUrls.add(url);
29
+ }
30
+ }
31
+ // Path 2: high-score XHRs from browser navigation
32
+ for (const r of allCaptured) {
33
+ if (r.score >= 60 &&
34
+ !r.isDomExtraction &&
35
+ !r.isAsset &&
36
+ r.isXHR &&
37
+ !state.triedEndpoints.has(r.url) &&
38
+ !seenUrls.has(r.url)) {
39
+ candidates.push(r);
40
+ seenUrls.add(r.url);
41
+ }
42
+ }
43
+ // Path 3: successful fetch_url in the last 5 steps of a successful run
44
+ if (agentResult.success) {
45
+ const recentSteps = agentResult.steps.slice(-5).reverse();
46
+ for (const step of recentSteps) {
47
+ if (step.toolName === "fetch_url" &&
48
+ step.result.success &&
49
+ step.params.url &&
50
+ !seenUrls.has(String(step.params.url)) &&
51
+ !state.triedEndpoints.has(String(step.params.url))) {
52
+ const fetchUrl = String(step.params.url);
53
+ const fetchData = step.result.data;
54
+ const bodyLen = fetchData?.body?.length ?? 0;
55
+ if (bodyLen > 100) {
56
+ const synthetic = {
57
+ id: `fetch_url_${Date.now()}`,
58
+ timestamp: Date.now(),
59
+ method: String(step.params.method ?? "GET"),
60
+ url: fetchUrl,
61
+ requestHeaders: {},
62
+ requestBody: step.params.body ? String(step.params.body) : undefined,
63
+ status: fetchData?.status ?? 200,
64
+ responseHeaders: {},
65
+ responseBody: fetchData?.body,
66
+ contentType: fetchData?.contentType ?? "",
67
+ isXHR: false,
68
+ isAsset: false,
69
+ score: 75,
70
+ isDomExtraction: false,
71
+ };
72
+ candidates.push(synthetic);
73
+ seenUrls.add(fetchUrl);
74
+ }
75
+ }
76
+ }
77
+ }
78
+ // Path 4: successful scrape on a page whose URL contains a seed value
79
+ const seeds = seedValues.map((s) => s.exampleValue.toLowerCase());
80
+ for (let i = 0; i < agentResult.steps.length; i++) {
81
+ const step = agentResult.steps[i];
82
+ if (step.toolName === "scrape" && step.result.success) {
83
+ const pageUrl = [...agentResult.steps]
84
+ .slice(0, i)
85
+ .reverse()
86
+ .find((s) => s.toolName === "navigate" && s.result.success && s.params.url)
87
+ ?.params.url;
88
+ if (pageUrl && seeds.some((sv) => pageUrl.toLowerCase().includes(sv))) {
89
+ const scrapeData = step.result.data;
90
+ if (scrapeData?.text && scrapeData.text.length > 100) {
91
+ const syntheticUrl = String(pageUrl);
92
+ if (!seenUrls.has(syntheticUrl)) {
93
+ candidates.push({
94
+ id: `scrape_${Date.now()}`,
95
+ timestamp: Date.now(),
96
+ method: "GET",
97
+ url: syntheticUrl,
98
+ requestHeaders: {},
99
+ status: 200,
100
+ responseHeaders: {},
101
+ responseBody: scrapeData.text,
102
+ contentType: "text/html",
103
+ isXHR: false,
104
+ isAsset: false,
105
+ score: 70,
106
+ isDomExtraction: true,
107
+ });
108
+ seenUrls.add(syntheticUrl);
109
+ }
110
+ }
111
+ }
112
+ }
113
+ }
114
+ // Exclude endpoints that already failed or were pre-validated in previous attempts
115
+ const viable = candidates.filter((r) => !state.triedEndpoints.has(r.url) &&
116
+ !state.preValidatedEndpoints.has(r.url));
117
+ if (viable.length === 0) {
118
+ recordFailedEndpoints(agentResult, state);
119
+ return null;
120
+ }
121
+ // Prefer endpoints where seed value appears in URL (parameterizable), then by score
122
+ viable.sort((a, b) => {
123
+ const aHasSeed = seeds.some((sv) => a.url.toLowerCase().includes(sv));
124
+ const bHasSeed = seeds.some((sv) => b.url.toLowerCase().includes(sv));
125
+ if (aHasSeed && !bHasSeed)
126
+ return -1;
127
+ if (!aHasSeed && bHasSeed)
128
+ return 1;
129
+ return b.score - a.score;
130
+ });
131
+ const best = viable[0];
132
+ // Build URL template by replacing seed values
133
+ const urlTemplate = buildUrlTemplate(best.url, seedValues);
134
+ return {
135
+ request: best,
136
+ urlTemplate,
137
+ score: best.score,
138
+ reproducible: true,
139
+ whyReproducible: explainReproducibility(best),
140
+ };
141
+ }
142
+ function buildUrlTemplate(url, seedValues) {
143
+ let template = url;
144
+ for (const seed of seedValues) {
145
+ if (template.includes(seed.exampleValue)) {
146
+ template = template.split(seed.exampleValue).join(`{${seed.paramName}}`);
147
+ }
148
+ }
149
+ return template;
150
+ }
151
+ function explainReproducibility(req) {
152
+ const parts = [];
153
+ if (req.isXHR)
154
+ parts.push("real XHR/fetch request");
155
+ if (req.contentType?.includes("json"))
156
+ parts.push("returns JSON");
157
+ if (req.score >= 80)
158
+ parts.push("high relevance score");
159
+ if (req.method === "GET")
160
+ parts.push("stateless GET — no session dependency");
161
+ if (req.method === "POST" && req.requestBody)
162
+ parts.push("POST with known payload structure");
163
+ return parts.length > 0
164
+ ? `Reproducible: ${parts.join(", ")}`
165
+ : "Captured as a real network request with structured response";
166
+ }
167
+ function recordFailedEndpoints(agentResult, state) {
168
+ for (const step of agentResult.steps) {
169
+ if (step.toolName === "fetch_url" && step.params.url) {
170
+ const url = String(step.params.url);
171
+ if (!state.triedEndpoints.has(url)) {
172
+ state.triedEndpoints.set(url, step.result.success
173
+ ? "returned data but not structured/useful enough"
174
+ : String(step.result.error ?? "request failed"));
175
+ }
176
+ }
177
+ }
178
+ }
179
+ //# sourceMappingURL=candidate-evaluator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"candidate-evaluator.js","sourceRoot":"","sources":["../../src/agent/candidate-evaluator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ToolResult } from "../tools/base";
2
+ import type { LLMDecision } from "./parser";
3
+ import type { DiscoveryState } from "./discovery-state";
4
+ export interface EnforcementResult {
5
+ blocked: boolean;
6
+ result: ToolResult;
7
+ message: string;
8
+ }
9
+ /** Check pre-execution enforcement rules. Returns null if the action is allowed. */
10
+ export declare function checkEnforcement(decision: LLMDecision, state: DiscoveryState): EnforcementResult | null;
11
+ //# sourceMappingURL=enforcement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enforcement.d.ts","sourceRoot":"","sources":["../../src/agent/enforcement.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD,oFAAoF;AACpF,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,WAAW,EACrB,KAAK,EAAE,cAAc,GACpB,iBAAiB,GAAG,IAAI,CA8B1B"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ // ─── Pre-execution enforcement ───────────────────────────────────────────────
3
+ // Mechanical guardrails that prevent the agent from wasting steps on dead ends.
4
+ // Runs BEFORE tool execution — blocks the action and returns feedback.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.checkEnforcement = checkEnforcement;
7
+ const FETCH_WITHOUT_SIGNAL_LIMIT = 5;
8
+ function extractHostname(url) {
9
+ try {
10
+ return new URL(url).hostname;
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ }
16
+ /** Check pre-execution enforcement rules. Returns null if the action is allowed. */
17
+ function checkEnforcement(decision, state) {
18
+ // Dead/exhausted domain check for navigate/fetch_url
19
+ if ((decision.tool_name === "navigate" || decision.tool_name === "fetch_url") && decision.params.url) {
20
+ const hostname = extractHostname(String(decision.params.url));
21
+ if (hostname && state.isDead(hostname)) {
22
+ return {
23
+ blocked: true,
24
+ result: { success: false, summary: `Domain blocked: connection error on previous attempt`, error: `Domain ${hostname} is permanently unreachable` },
25
+ message: `Domain ${hostname} is permanently unreachable (connection error on a previous attempt). Do not attempt to visit it again. Remove it from your plan and choose a different source.`,
26
+ };
27
+ }
28
+ if (hostname && state.isExhausted(hostname)) {
29
+ return {
30
+ blocked: true,
31
+ result: { success: false, summary: `Domain exhausted: many steps without useful signal`, error: `Domain ${hostname} has been exhausted without finding useful data` },
32
+ message: `Domain ${hostname} has been explored extensively without finding useful API signal. Try a completely different site or source.`,
33
+ };
34
+ }
35
+ }
36
+ // Consecutive fetch_url without signal limit
37
+ if (decision.tool_name === "fetch_url" && state.consecutiveFetchWithoutSignal >= FETCH_WITHOUT_SIGNAL_LIMIT) {
38
+ return {
39
+ blocked: true,
40
+ result: { success: false, summary: `fetch_url blocked: ${FETCH_WITHOUT_SIGNAL_LIMIT} consecutive calls without useful signal`, error: "fetch limit reached" },
41
+ message: `You have made ${FETCH_WITHOUT_SIGNAL_LIMIT} consecutive fetch_url calls without finding useful data. Stop probing URLs and change approach: navigate to a real website, interact with it, and inspect network traffic or JS source to find real endpoints.`,
42
+ };
43
+ }
44
+ return null;
45
+ }
46
+ //# sourceMappingURL=enforcement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enforcement.js","sourceRoot":"","sources":["../../src/agent/enforcement.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,gFAAgF;AAChF,uEAAuE;;AAmBvE,4CAiCC;AA9CD,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAQrC,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC;QAAC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;AAC9D,CAAC;AAED,oFAAoF;AACpF,SAAgB,gBAAgB,CAC9B,QAAqB,EACrB,KAAqB;IAErB,qDAAqD;IACrD,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU,IAAI,QAAQ,CAAC,SAAS,KAAK,WAAW,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACrG,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9D,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,sDAAsD,EAAE,KAAK,EAAE,UAAU,QAAQ,6BAA6B,EAAE;gBACnJ,OAAO,EAAE,UAAU,QAAQ,iKAAiK;aAC7L,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,oDAAoD,EAAE,KAAK,EAAE,UAAU,QAAQ,iDAAiD,EAAE;gBACrK,OAAO,EAAE,UAAU,QAAQ,8GAA8G;aAC1I,CAAC;QACJ,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IAAI,QAAQ,CAAC,SAAS,KAAK,WAAW,IAAI,KAAK,CAAC,6BAA6B,IAAI,0BAA0B,EAAE,CAAC;QAC5G,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,sBAAsB,0BAA0B,0CAA0C,EAAE,KAAK,EAAE,qBAAqB,EAAE;YAC7J,OAAO,EAAE,iBAAiB,0BAA0B,iNAAiN;SACtQ,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ToolRegistry } from "../registry";
2
+ import type { ToolContext } from "../tools/base";
3
+ import type { ConversationHistory } from "./conversation";
4
+ import type { SeedValue } from "../types";
5
+ export interface ExtractionResult {
6
+ data: string;
7
+ url: string;
8
+ }
9
+ /** Try to extract data from the current page using multiple strategies. */
10
+ export declare function tryExtraction(pageUrl: string, _seedValues: SeedValue[], registry: ToolRegistry, ctx: ToolContext, conversation: ConversationHistory): Promise<ExtractionResult | null>;
11
+ //# sourceMappingURL=extraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../src/agent/extraction.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAWD,2EAA2E;AAC3E,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,SAAS,EAAE,EACxB,QAAQ,EAAE,YAAY,EACtB,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,mBAAmB,GAChC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgClC"}