auspex 0.2.0 → 0.3.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 (90) hide show
  1. package/package.json +10 -4
  2. package/readme.md +169 -35
  3. package/dist/agent/actions.d.ts +0 -5
  4. package/dist/agent/actions.d.ts.map +0 -1
  5. package/dist/agent/actions.js +0 -26
  6. package/dist/agent/actions.js.map +0 -1
  7. package/dist/agent/agent.d.ts +0 -12
  8. package/dist/agent/agent.d.ts.map +0 -1
  9. package/dist/agent/agent.js +0 -159
  10. package/dist/agent/agent.js.map +0 -1
  11. package/dist/agent/loop.d.ts +0 -6
  12. package/dist/agent/loop.d.ts.map +0 -1
  13. package/dist/agent/loop.js +0 -175
  14. package/dist/agent/loop.js.map +0 -1
  15. package/dist/agent/report.d.ts +0 -3
  16. package/dist/agent/report.d.ts.map +0 -1
  17. package/dist/agent/report.js +0 -95
  18. package/dist/agent/report.js.map +0 -1
  19. package/dist/browser/executor.d.ts +0 -5
  20. package/dist/browser/executor.d.ts.map +0 -1
  21. package/dist/browser/executor.js +0 -33
  22. package/dist/browser/executor.js.map +0 -1
  23. package/dist/browser/snapshot.d.ts +0 -6
  24. package/dist/browser/snapshot.d.ts.map +0 -1
  25. package/dist/browser/snapshot.js +0 -145
  26. package/dist/browser/snapshot.js.map +0 -1
  27. package/dist/config/defaults.d.ts +0 -11
  28. package/dist/config/defaults.d.ts.map +0 -1
  29. package/dist/config/defaults.js +0 -11
  30. package/dist/config/defaults.js.map +0 -1
  31. package/dist/config/schema.d.ts +0 -62
  32. package/dist/config/schema.d.ts.map +0 -1
  33. package/dist/config/schema.js +0 -24
  34. package/dist/config/schema.js.map +0 -1
  35. package/dist/index.d.ts +0 -7
  36. package/dist/index.d.ts.map +0 -1
  37. package/dist/index.js +0 -8
  38. package/dist/index.js.map +0 -1
  39. package/dist/llm/client.d.ts +0 -23
  40. package/dist/llm/client.d.ts.map +0 -1
  41. package/dist/llm/client.js +0 -51
  42. package/dist/llm/client.js.map +0 -1
  43. package/dist/llm/prompt.d.ts +0 -3
  44. package/dist/llm/prompt.d.ts.map +0 -1
  45. package/dist/llm/prompt.js +0 -36
  46. package/dist/llm/prompt.js.map +0 -1
  47. package/dist/scraper/extractors/content.d.ts +0 -32
  48. package/dist/scraper/extractors/content.d.ts.map +0 -1
  49. package/dist/scraper/extractors/content.js +0 -276
  50. package/dist/scraper/extractors/content.js.map +0 -1
  51. package/dist/scraper/extractors/ssr.d.ts +0 -17
  52. package/dist/scraper/extractors/ssr.d.ts.map +0 -1
  53. package/dist/scraper/extractors/ssr.js +0 -162
  54. package/dist/scraper/extractors/ssr.js.map +0 -1
  55. package/dist/scraper/extractors/to-markdown.d.ts +0 -5
  56. package/dist/scraper/extractors/to-markdown.d.ts.map +0 -1
  57. package/dist/scraper/extractors/to-markdown.js +0 -103
  58. package/dist/scraper/extractors/to-markdown.js.map +0 -1
  59. package/dist/scraper/index.d.ts +0 -35
  60. package/dist/scraper/index.d.ts.map +0 -1
  61. package/dist/scraper/index.js +0 -299
  62. package/dist/scraper/index.js.map +0 -1
  63. package/dist/scraper/tiers/tier1-http.d.ts +0 -5
  64. package/dist/scraper/tiers/tier1-http.d.ts.map +0 -1
  65. package/dist/scraper/tiers/tier1-http.js +0 -122
  66. package/dist/scraper/tiers/tier1-http.js.map +0 -1
  67. package/dist/scraper/tiers/tier2-stealth.d.ts +0 -5
  68. package/dist/scraper/tiers/tier2-stealth.d.ts.map +0 -1
  69. package/dist/scraper/tiers/tier2-stealth.js +0 -108
  70. package/dist/scraper/tiers/tier2-stealth.js.map +0 -1
  71. package/dist/scraper/tiers/tier3-browser.d.ts +0 -10
  72. package/dist/scraper/tiers/tier3-browser.d.ts.map +0 -1
  73. package/dist/scraper/tiers/tier3-browser.js +0 -506
  74. package/dist/scraper/tiers/tier3-browser.js.map +0 -1
  75. package/dist/scraper/types.d.ts +0 -161
  76. package/dist/scraper/types.d.ts.map +0 -1
  77. package/dist/scraper/types.js +0 -3
  78. package/dist/scraper/types.js.map +0 -1
  79. package/dist/security/action-validator.d.ts +0 -83
  80. package/dist/security/action-validator.d.ts.map +0 -1
  81. package/dist/security/action-validator.js +0 -36
  82. package/dist/security/action-validator.js.map +0 -1
  83. package/dist/security/url-validator.d.ts +0 -9
  84. package/dist/security/url-validator.d.ts.map +0 -1
  85. package/dist/security/url-validator.js +0 -69
  86. package/dist/security/url-validator.js.map +0 -1
  87. package/dist/types.d.ts +0 -96
  88. package/dist/types.d.ts.map +0 -1
  89. package/dist/types.js +0 -2
  90. package/dist/types.js.map +0 -1
@@ -1,175 +0,0 @@
1
- import { takeSnapshot, formatSnapshot } from "../browser/snapshot.js";
2
- import { executeAction } from "../browser/executor.js";
3
- import { LLMClient } from "../llm/client.js";
4
- import { parseAndValidateAction, formatActionForHistory } from "./actions.js";
5
- import { generateReport } from "./report.js";
6
- // Janela deslizante do histórico enviado ao LLM.
7
- // Mantém o primeiro item (contexto inicial) + os N mais recentes.
8
- // Evita que o histórico cresça indefinidamente e consuma tokens desnecessários.
9
- const HISTORY_WINDOW = 8;
10
- // Detecção de loop: janela deslizante das últimas N action keys.
11
- // Se uma mesma ação aparecer MAX_OCCURRENCES vezes dentro de RECENT_WINDOW
12
- // iterações, o agente está preso (captura padrões A,A,A e também A,B,A,B,A).
13
- const RECENT_WINDOW = 9; // quantas ações recentes rastrear
14
- const MAX_OCCURRENCES = 3; // máximo de vezes que a mesma ação pode aparecer na janela
15
- function windowedHistory(history) {
16
- if (history.length <= HISTORY_WINDOW)
17
- return history;
18
- // Primeiro item = contexto de início de navegação → sempre preservado
19
- return [history[0], ...history.slice(-(HISTORY_WINDOW - 1))];
20
- }
21
- function buildResult(status, tier, data, actions, usage, peakRssKb, startTime, url, prompt, error) {
22
- const mem = process.memoryUsage();
23
- const memory = {
24
- browserPeakRssKb: peakRssKb,
25
- nodeHeapUsedMb: Math.round((mem.heapUsed / 1024 / 1024) * 100) / 100,
26
- };
27
- const durationMs = Date.now() - startTime;
28
- const result = { status, tier, data, report: "", durationMs, actions, usage, memory, error };
29
- result.report = generateReport(result, url, prompt);
30
- return result;
31
- }
32
- // ─── Loop estático (sem browser) ──────────────────────────────────────────────
33
- //
34
- // Tenta resolver o prompt em UMA chamada LLM usando snapshot do HTML via Cheerio.
35
- // Retorna AgentResult com tier="http" se o LLM conseguir responder com "done".
36
- // Retorna null se o LLM precisar de interação → sinal para lançar o Playwright.
37
- //
38
- // ─────────────────────────────────────────────────────────────────────────────
39
- export async function runStaticLoop(snapshot, url, prompt, config) {
40
- const startTime = Date.now();
41
- const urlOptions = {
42
- allowedDomains: config.allowedDomains,
43
- blockedDomains: config.blockedDomains,
44
- };
45
- const llm = new LLMClient(config.llmApiKey, config.model, {
46
- temperature: config.temperature,
47
- maxTokens: config.maxTokens,
48
- topP: config.topP,
49
- frequencyPenalty: config.frequencyPenalty,
50
- presencePenalty: config.presencePenalty,
51
- }, config.llmBaseUrl);
52
- const usage = { promptTokens: 0, completionTokens: 0, totalTokens: 0, calls: 0 };
53
- let raw;
54
- try {
55
- const response = await llm.decideAction(prompt, formatSnapshot(snapshot), []);
56
- raw = response.data;
57
- usage.promptTokens = response.usage.promptTokens;
58
- usage.completionTokens = response.usage.completionTokens;
59
- usage.totalTokens = response.usage.totalTokens;
60
- usage.calls = 1;
61
- }
62
- catch {
63
- return null; // Falha na chamada LLM → cai para o Playwright
64
- }
65
- let action;
66
- try {
67
- action = await parseAndValidateAction(raw, urlOptions);
68
- }
69
- catch {
70
- return null; // Ação inválida → cai para o Playwright
71
- }
72
- if (action.type === "done") {
73
- const actions = [{ action, iteration: 0, timestamp: Date.now() }];
74
- const isFailed = typeof action.result === "string" && action.result.startsWith("FAILED:");
75
- if (isFailed) {
76
- const reason = action.result.slice(7).trim() || "O agente não conseguiu completar a tarefa.";
77
- return buildResult("error", "http", null, actions, usage, 0, startTime, url, prompt, reason);
78
- }
79
- // LLM conseguiu extrair os dados do HTML estático ✅ sem precisar de browser
80
- return buildResult("done", "http", action.result, actions, usage, 0, startTime, url, prompt);
81
- }
82
- // LLM precisa navegar ou interagir (click, goto, etc.) → Playwright necessário
83
- return null;
84
- }
85
- // ─── Loop interativo (Playwright) ────────────────────────────────────────────
86
- //
87
- // getMemoryKb: callback que retorna o RSS do processo do browser em KB.
88
- // Passado pelo agent.ts usando o PID do processo Chromium lançado.
89
- //
90
- // ─────────────────────────────────────────────────────────────────────────────
91
- export async function runAgentLoop(page, url, prompt, config, getMemoryKb = () => 0) {
92
- const llm = new LLMClient(config.llmApiKey, config.model, {
93
- temperature: config.temperature,
94
- maxTokens: config.maxTokens,
95
- topP: config.topP,
96
- frequencyPenalty: config.frequencyPenalty,
97
- presencePenalty: config.presencePenalty,
98
- }, config.llmBaseUrl);
99
- const urlOptions = {
100
- allowedDomains: config.allowedDomains,
101
- blockedDomains: config.blockedDomains,
102
- };
103
- // Auto-dismiss any dialogs (alert, confirm, prompt) to prevent browser from hanging
104
- page.on("dialog", (dialog) => dialog.dismiss().catch(() => { }));
105
- const actions = [];
106
- const history = [];
107
- const usage = { promptTokens: 0, completionTokens: 0, totalTokens: 0, calls: 0 };
108
- let peakRssKb = 0;
109
- const recentActionKeys = []; // janela deslizante para detecção de loop
110
- const startTime = Date.now();
111
- for (let i = 0; i < config.maxIterations; i++) {
112
- const currentRss = getMemoryKb();
113
- if (currentRss > peakRssKb)
114
- peakRssKb = currentRss;
115
- if (Date.now() - startTime > config.timeoutMs) {
116
- return buildResult("timeout", "playwright", null, actions, usage, peakRssKb, startTime, url, prompt, `Timeout after ${config.timeoutMs}ms`);
117
- }
118
- const snapshot = await takeSnapshot(page);
119
- const formatted = formatSnapshot(snapshot);
120
- let raw;
121
- try {
122
- const response = await llm.decideAction(prompt, formatted, windowedHistory(history));
123
- raw = response.data;
124
- usage.promptTokens += response.usage.promptTokens;
125
- usage.completionTokens += response.usage.completionTokens;
126
- usage.totalTokens += response.usage.totalTokens;
127
- usage.calls++;
128
- }
129
- catch (err) {
130
- return buildResult("error", "playwright", null, actions, usage, peakRssKb, startTime, url, prompt, `LLM error: ${err instanceof Error ? err.message : String(err)}`);
131
- }
132
- let action;
133
- try {
134
- action = await parseAndValidateAction(raw, urlOptions);
135
- }
136
- catch (err) {
137
- return buildResult("error", "playwright", null, actions, usage, peakRssKb, startTime, url, prompt, `Action validation error: ${err instanceof Error ? err.message : String(err)}`);
138
- }
139
- // ── Detecção de loop (padrão A,A,A e também alternados A,B,A,B,A) ─────
140
- // Conta quantas vezes esta ação aparece nas últimas RECENT_WINDOW iterações.
141
- // Se atingir MAX_OCCURRENCES, o agente está preso e precisa tentar outra abordagem.
142
- const actionKey = JSON.stringify(action);
143
- const occurrencesInWindow = recentActionKeys.filter(k => k === actionKey).length;
144
- if (occurrencesInWindow >= MAX_OCCURRENCES) {
145
- history.push(`[${i}] STUCK: action repeated ${MAX_OCCURRENCES} times in the last ${RECENT_WINDOW} steps. ` +
146
- "You MUST try a completely different approach.");
147
- recentActionKeys.length = 0; // reseta a janela para permitir nova tentativa
148
- continue;
149
- }
150
- recentActionKeys.push(actionKey);
151
- if (recentActionKeys.length > RECENT_WINDOW)
152
- recentActionKeys.shift();
153
- actions.push({ action, iteration: i, timestamp: Date.now() });
154
- history.push(formatActionForHistory(action, i));
155
- if (action.type === "done") {
156
- const isFailed = typeof action.result === "string" && action.result.startsWith("FAILED:");
157
- if (isFailed) {
158
- const reason = action.result.slice(7).trim() || "O agente não conseguiu completar a tarefa.";
159
- return buildResult("error", "playwright", null, actions, usage, peakRssKb, startTime, url, prompt, reason);
160
- }
161
- return buildResult("done", "playwright", action.result, actions, usage, peakRssKb, startTime, url, prompt);
162
- }
163
- try {
164
- await executeAction(page, action, urlOptions);
165
- history.push(formatActionForHistory(action, i) + " -> OK");
166
- }
167
- catch (err) {
168
- const msg = err instanceof Error ? err.message : String(err);
169
- history.push(`[${i}] ERROR executing ${action.type}: ${msg}. Try a different approach.`);
170
- }
171
- await page.waitForTimeout(1_000);
172
- }
173
- return buildResult("max_iterations", "playwright", null, actions, usage, peakRssKb, startTime, url, prompt, `Reached max iterations (${config.maxIterations})`);
174
- }
175
- //# sourceMappingURL=loop.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/agent/loop.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { AgentResult } from "../types.js";
2
- export declare function generateReport(result: AgentResult, url: string, prompt: string): string;
3
- //# sourceMappingURL=report.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/agent/report.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAA6B,MAAM,aAAa,CAAC;AA4D1E,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAgDvF"}
@@ -1,95 +0,0 @@
1
- function describeAction(record) {
2
- const { action } = record;
3
- switch (action.type) {
4
- case "click":
5
- return `Clicou no elemento "${action.selector}"`;
6
- case "type":
7
- return `Digitou "${action.text}" no campo "${action.selector}"`;
8
- case "goto":
9
- return `Navegou para ${action.url}`;
10
- case "wait":
11
- return `Aguardou ${action.ms}ms`;
12
- case "scroll":
13
- return `Fez scroll ${action.direction === "down" ? "para baixo" : "para cima"}`;
14
- case "done": {
15
- const r = action.result;
16
- if (typeof r === "string" && r.startsWith("FAILED:")) {
17
- return `Falhou: ${r.slice(7).trim()}`;
18
- }
19
- return `Finalizou com resultado`;
20
- }
21
- }
22
- }
23
- function describeStatus(result) {
24
- switch (result.status) {
25
- case "done":
26
- return "Tarefa concluída com sucesso.";
27
- case "max_iterations":
28
- return `Tarefa interrompida: atingiu o limite de ${result.actions.length} iterações sem concluir.`;
29
- case "timeout":
30
- return "Tarefa interrompida: tempo limite excedido.";
31
- case "error":
32
- return `Tarefa interrompida por erro: ${result.error}`;
33
- }
34
- }
35
- function describeTier(result) {
36
- if (result.tier === "http") {
37
- return "🟢 HTTP/Cheerio (sem browser — página estática)";
38
- }
39
- return "🟡 Playwright Chromium (browser completo — JS necessário)";
40
- }
41
- function describeMemory(result) {
42
- const node = `Node.js heap ${result.memory.nodeHeapUsedMb} MB`;
43
- if (result.tier === "http") {
44
- return `${node} | Browser: não utilizado`;
45
- }
46
- if (result.memory.browserPeakRssKb > 0) {
47
- const browserMb = (result.memory.browserPeakRssKb / 1024).toFixed(1);
48
- return `${node} | Chromium pico ${browserMb} MB`;
49
- }
50
- return `${node} | Chromium: RSS não disponível`;
51
- }
52
- export function generateReport(result, url, prompt) {
53
- const lines = [];
54
- const duration = (result.durationMs / 1000).toFixed(1);
55
- lines.push("═══════════════════════════════════════════");
56
- lines.push(" RELATÓRIO DE EXECUÇÃO");
57
- lines.push("═══════════════════════════════════════════");
58
- lines.push("");
59
- lines.push(` URL : ${url}`);
60
- lines.push(` Prompt : ${prompt}`);
61
- lines.push(` Status : ${describeStatus(result)}`);
62
- lines.push(` Método : ${describeTier(result)}`);
63
- lines.push(` Duração: ${duration}s`);
64
- lines.push("");
65
- if (result.actions.length > 0) {
66
- lines.push("───────────────────────────────────────────");
67
- lines.push(" PASSO A PASSO");
68
- lines.push("───────────────────────────────────────────");
69
- lines.push("");
70
- for (const record of result.actions) {
71
- const step = record.iteration + 1;
72
- lines.push(` ${step}. ${describeAction(record)}`);
73
- }
74
- lines.push("");
75
- }
76
- if (result.data) {
77
- lines.push("───────────────────────────────────────────");
78
- lines.push(" RESULTADO");
79
- lines.push("───────────────────────────────────────────");
80
- lines.push("");
81
- lines.push(` ${result.data}`);
82
- lines.push("");
83
- }
84
- lines.push("───────────────────────────────────────────");
85
- lines.push(" CONSUMO DE RECURSOS");
86
- lines.push("───────────────────────────────────────────");
87
- lines.push("");
88
- lines.push(` LLM : ${result.usage.calls} chamada(s) | ${result.usage.totalTokens} tokens`);
89
- lines.push(` ↳ ${result.usage.promptTokens} prompt + ${result.usage.completionTokens} completion`);
90
- lines.push(` RAM : ${describeMemory(result)}`);
91
- lines.push("");
92
- lines.push("═══════════════════════════════════════════");
93
- return lines.join("\n");
94
- }
95
- //# sourceMappingURL=report.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/agent/report.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { Page } from "playwright-core";
2
- import type { AgentAction } from "../types.js";
3
- import { type UrlValidationOptions } from "../security/url-validator.js";
4
- export declare function executeAction(page: Page, action: AgentAction, urlOptions: UrlValidationOptions): Promise<void>;
5
- //# sourceMappingURL=executor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/browser/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAe,KAAK,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEtF,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,oBAAoB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAmCf"}
@@ -1,33 +0,0 @@
1
- import { validateUrl } from "../security/url-validator.js";
2
- export async function executeAction(page, action, urlOptions) {
3
- switch (action.type) {
4
- case "click": {
5
- const urlBefore = page.url();
6
- await page.click(action.selector, { timeout: 10_000 });
7
- // If click triggered navigation, wait for it to settle
8
- if (page.url() !== urlBefore) {
9
- await page.waitForLoadState("domcontentloaded", { timeout: 15_000 }).catch(() => { });
10
- }
11
- break;
12
- }
13
- case "type":
14
- await page.fill(action.selector, action.text, { timeout: 5_000 });
15
- break;
16
- case "goto": {
17
- const validUrl = await validateUrl(action.url, urlOptions);
18
- await page.goto(validUrl, { waitUntil: "domcontentloaded", timeout: 30_000 });
19
- break;
20
- }
21
- case "wait":
22
- await page.waitForTimeout(action.ms);
23
- break;
24
- case "scroll":
25
- await page.evaluate((dir) => {
26
- window.scrollBy(0, dir === "down" ? 500 : -500);
27
- }, action.direction);
28
- break;
29
- case "done":
30
- break;
31
- }
32
- }
33
- //# sourceMappingURL=executor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/browser/executor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAA6B,MAAM,8BAA8B,CAAC;AAEtF,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAU,EACV,MAAmB,EACnB,UAAgC;IAEhC,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACvD,uDAAuD;YACvD,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACvF,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,MAAM;YACT,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAClE,MAAM;QAER,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC3D,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9E,MAAM;QACR,CAAC;QAED,KAAK,MAAM;YACT,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACrC,MAAM;QAER,KAAK,QAAQ;YACX,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAW,EAAE,EAAE;gBAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAClD,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACrB,MAAM;QAER,KAAK,MAAM;YACT,MAAM;IACV,CAAC;AACH,CAAC"}
@@ -1,6 +0,0 @@
1
- import type { Page } from "playwright-core";
2
- import type { PageSnapshot } from "../types.js";
3
- export declare function takeSnapshot(page: Page): Promise<PageSnapshot>;
4
- export declare function snapshotFromHtml(html: string, url: string): PageSnapshot;
5
- export declare function formatSnapshot(snapshot: PageSnapshot): string;
6
- //# sourceMappingURL=snapshot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/browser/snapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAA6C,MAAM,aAAa,CAAC;AAqC3F,wBAAsB,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAwCpE;AAID,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,YAAY,CA0CxE;AAID,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CA8B7D"}
@@ -1,145 +0,0 @@
1
- import * as cheerio from "cheerio";
2
- // ─── Limites do snapshot (calibrados para economizar tokens) ──────────────────
3
- const TEXT_LIMIT = 3_500; // chars de texto da página enviados ao LLM
4
- const LINKS_LIMIT = 25; // máximo de links por snapshot
5
- const FORMS_LIMIT = 5; // máximo de forms por snapshot
6
- const INPUTS_LIMIT = 10; // máximo de inputs por form
7
- // ─── Filtro de links ruído ────────────────────────────────────────────────────
8
- //
9
- // Descarta links que não ajudam o LLM a navegar:
10
- // - domínios de redes sociais / ícones de compartilhamento
11
- // - links de assets (imagens, fontes, CSS, JS)
12
- // - âncoras vazias, javascript: e mailto:
13
- // - links sem texto visível
14
- //
15
- const NOISE_HOSTS = new Set([
16
- "twitter.com", "x.com", "facebook.com", "instagram.com",
17
- "linkedin.com", "youtube.com", "tiktok.com",
18
- "t.me", "wa.me", "discord.gg", "github.com",
19
- ]);
20
- const NOISE_EXTENSIONS = /\.(png|jpe?g|gif|svg|ico|webp|css|js|woff2?|ttf|eot|pdf)(\?.*)?$/i;
21
- function isNoiseLink(href, text) {
22
- if (!href || href === "#" || href.startsWith("javascript:") ||
23
- href.startsWith("mailto:") || href.startsWith("tel:"))
24
- return true;
25
- if (NOISE_EXTENSIONS.test(href))
26
- return true;
27
- if (!text.trim())
28
- return true; // sem texto visível → irrelevante pro LLM
29
- try {
30
- const { hostname } = new URL(href);
31
- if (NOISE_HOSTS.has(hostname.replace(/^www\./, "")))
32
- return true;
33
- }
34
- catch { /* URL relativa ou inválida — mantém */ }
35
- return false;
36
- }
37
- // ─── Snapshot via Playwright (página renderizada com JS) ─────────────────────
38
- export async function takeSnapshot(page) {
39
- const url = page.url();
40
- const title = await page.title();
41
- const text = await page.evaluate((limit) => {
42
- return document.body?.innerText?.slice(0, limit) ?? "";
43
- }, TEXT_LIMIT);
44
- const rawLinks = await page.evaluate((limit) => {
45
- return Array.from(document.querySelectorAll("a[href]"))
46
- .slice(0, limit * 3) // coleta mais para filtrar depois no Node.js
47
- .map((el, i) => ({
48
- text: el.innerText.trim().slice(0, 80),
49
- href: el.href,
50
- index: i,
51
- }));
52
- }, LINKS_LIMIT);
53
- const links = rawLinks
54
- .filter(l => !isNoiseLink(l.href, l.text))
55
- .slice(0, LINKS_LIMIT)
56
- .map((l, i) => ({ ...l, index: i }));
57
- const forms = await page.evaluate((limits) => {
58
- return Array.from(document.querySelectorAll("form")).slice(0, limits.forms).map((form) => ({
59
- action: form.action,
60
- inputs: Array.from(form.querySelectorAll("input, textarea, select"))
61
- .slice(0, limits.inputs)
62
- .map((el) => {
63
- const input = el;
64
- const id = input.id ? `#${input.id}` : "";
65
- const name = input.name ? `[name="${input.name}"]` : "";
66
- const tag = el.tagName.toLowerCase();
67
- const selector = id || (name ? `${tag}${name}` : tag);
68
- return { name: input.name || input.id || "", type: input.type || tag, placeholder: input.placeholder || "", selector };
69
- }),
70
- }));
71
- }, { forms: FORMS_LIMIT, inputs: INPUTS_LIMIT });
72
- return { url, title, text, links, forms };
73
- }
74
- // ─── Snapshot via Cheerio (HTML estático, sem browser) ───────────────────────
75
- export function snapshotFromHtml(html, url) {
76
- const $ = cheerio.load(html);
77
- const title = $("title").text().trim();
78
- $("script, style, noscript").remove();
79
- const text = ($("body").text() ?? "").replace(/\s+/g, " ").trim().slice(0, TEXT_LIMIT);
80
- const links = [];
81
- let linkIndex = 0;
82
- $("a[href]").each((_, el) => {
83
- if (links.length >= LINKS_LIMIT)
84
- return false; // break
85
- const href = $(el).attr("href") ?? "";
86
- const text = $(el).text().trim().slice(0, 80);
87
- let absoluteHref = href;
88
- try {
89
- absoluteHref = href.startsWith("http") ? href : new URL(href, url).href;
90
- }
91
- catch { /* href relativo inválido */ }
92
- if (!isNoiseLink(absoluteHref, text)) {
93
- links.push({ text, href: absoluteHref, index: linkIndex++ });
94
- }
95
- });
96
- const forms = [];
97
- $("form").slice(0, FORMS_LIMIT).each((_, formEl) => {
98
- const action = $(formEl).attr("action") ?? "";
99
- const inputs = [];
100
- $(formEl).find("input, textarea, select").slice(0, INPUTS_LIMIT).each((_, inputEl) => {
101
- const id = $(inputEl).attr("id") ? `#${$(inputEl).attr("id")}` : "";
102
- const name = $(inputEl).attr("name") ? `[name="${$(inputEl).attr("name")}"]` : "";
103
- const tag = ("name" in inputEl ? inputEl.name : "input").toLowerCase();
104
- const selector = id || (name ? `${tag}${name}` : tag);
105
- inputs.push({
106
- name: $(inputEl).attr("name") || $(inputEl).attr("id") || "",
107
- type: $(inputEl).attr("type") || tag,
108
- placeholder: $(inputEl).attr("placeholder") || "",
109
- selector,
110
- });
111
- });
112
- forms.push({ action, inputs });
113
- });
114
- return { url, title, text, links, forms };
115
- }
116
- // ─── Formata snapshot para envio ao LLM ──────────────────────────────────────
117
- export function formatSnapshot(snapshot) {
118
- const lines = [
119
- `## Current Page`,
120
- `URL: ${snapshot.url}`,
121
- `Title: ${snapshot.title}`,
122
- "",
123
- `### Page Text`,
124
- snapshot.text, // já truncado em TEXT_LIMIT no momento da coleta
125
- "",
126
- ];
127
- if (snapshot.links.length > 0) {
128
- lines.push(`### Links (${snapshot.links.length})`);
129
- for (const link of snapshot.links) {
130
- lines.push(`[${link.index}] "${link.text}" -> ${link.href}`);
131
- }
132
- lines.push("");
133
- }
134
- if (snapshot.forms.length > 0) {
135
- lines.push(`### Forms (${snapshot.forms.length})`);
136
- for (const form of snapshot.forms) {
137
- lines.push(`Form action: ${form.action}`);
138
- for (const input of form.inputs) {
139
- lines.push(` - ${input.type} name="${input.name}" placeholder="${input.placeholder}" selector="${input.selector}"`);
140
- }
141
- }
142
- }
143
- return lines.join("\n");
144
- }
145
- //# sourceMappingURL=snapshot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/browser/snapshot.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export declare const DEFAULTS: {
2
- readonly model: "gpt-4o";
3
- readonly temperature: 1;
4
- readonly maxIterations: 30;
5
- readonly timeoutMs: 120000;
6
- readonly maxWaitMs: 5000;
7
- readonly maxTypeLength: 1000;
8
- readonly maxTokens: 2500;
9
- readonly gotoTimeoutMs: 15000;
10
- };
11
- //# sourceMappingURL=defaults.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;;;;;;;CASX,CAAC"}
@@ -1,11 +0,0 @@
1
- export const DEFAULTS = {
2
- model: "gpt-4o",
3
- temperature: 1,
4
- maxIterations: 30,
5
- timeoutMs: 120_000,
6
- maxWaitMs: 5_000,
7
- maxTypeLength: 1_000,
8
- maxTokens: 2_500, // limite de completion tokens por chamada LLM
9
- gotoTimeoutMs: 15_000,
10
- };
11
- //# sourceMappingURL=defaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,CAAC;IACd,aAAa,EAAE,EAAE;IACjB,SAAS,EAAE,OAAO;IAClB,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,KAAK,EAAE,8CAA8C;IAChE,aAAa,EAAE,MAAM;CACb,CAAC"}
@@ -1,62 +0,0 @@
1
- import { z } from "zod";
2
- export declare const agentConfigSchema: z.ZodObject<{
3
- llmApiKey: z.ZodString;
4
- llmBaseUrl: z.ZodOptional<z.ZodString>;
5
- port: z.ZodDefault<z.ZodNumber>;
6
- model: z.ZodDefault<z.ZodString>;
7
- temperature: z.ZodDefault<z.ZodNumber>;
8
- maxTokens: z.ZodDefault<z.ZodNumber>;
9
- topP: z.ZodOptional<z.ZodNumber>;
10
- frequencyPenalty: z.ZodOptional<z.ZodNumber>;
11
- presencePenalty: z.ZodOptional<z.ZodNumber>;
12
- maxIterations: z.ZodDefault<z.ZodNumber>;
13
- timeoutMs: z.ZodDefault<z.ZodNumber>;
14
- maxWaitMs: z.ZodDefault<z.ZodNumber>;
15
- gotoTimeoutMs: z.ZodDefault<z.ZodNumber>;
16
- allowedDomains: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
17
- blockedDomains: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
18
- }, "strip", z.ZodTypeAny, {
19
- llmApiKey: string;
20
- port: number;
21
- model: string;
22
- temperature: number;
23
- maxTokens: number;
24
- maxIterations: number;
25
- timeoutMs: number;
26
- maxWaitMs: number;
27
- gotoTimeoutMs: number;
28
- llmBaseUrl?: string | undefined;
29
- topP?: number | undefined;
30
- frequencyPenalty?: number | undefined;
31
- presencePenalty?: number | undefined;
32
- allowedDomains?: string[] | undefined;
33
- blockedDomains?: string[] | undefined;
34
- }, {
35
- llmApiKey: string;
36
- llmBaseUrl?: string | undefined;
37
- port?: number | undefined;
38
- model?: string | undefined;
39
- temperature?: number | undefined;
40
- maxTokens?: number | undefined;
41
- topP?: number | undefined;
42
- frequencyPenalty?: number | undefined;
43
- presencePenalty?: number | undefined;
44
- maxIterations?: number | undefined;
45
- timeoutMs?: number | undefined;
46
- maxWaitMs?: number | undefined;
47
- gotoTimeoutMs?: number | undefined;
48
- allowedDomains?: string[] | undefined;
49
- blockedDomains?: string[] | undefined;
50
- }>;
51
- export declare const runOptionsSchema: z.ZodObject<{
52
- url: z.ZodString;
53
- prompt: z.ZodString;
54
- }, "strip", z.ZodTypeAny, {
55
- url: string;
56
- prompt: string;
57
- }, {
58
- url: string;
59
- prompt: string;
60
- }>;
61
- export type ValidatedConfig = z.infer<typeof agentConfigSchema>;
62
- //# sourceMappingURL=schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB5B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}