social-agent-cli 1.4.0 → 1.5.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.
package/ai/mapper.ts CHANGED
@@ -209,11 +209,12 @@ export async function generateMap(
209
209
 
210
210
  GÖREV: "${taskDescription}"
211
211
 
212
- DOM:
213
- ${domSnapshot.substring(0, 50000)}
212
+ Sayfanın Accessibility Tree'si (ARIA Snapshot):
213
+ ${domSnapshot}
214
214
 
215
215
  Kurallar:
216
- - data-testid, aria-label, role, id tercih et
216
+ - ARIA snapshot'taki role ve name bilgilerini kullanarak selector oluştur
217
+ - aria-label, role, data-testid, id tercih et
217
218
  - Her adım için 2+ fallback selector
218
219
  - Parametreler için placeholder kullan: {{CONTENT}} = metin, {{USERNAME}} = kullanıcı adı, {{URL}} = link, vs.
219
220
  - Hangi parametreleri kullandığını "parameters" alanında listele
@@ -311,8 +312,8 @@ Başarısız olan adım (#${failedStepIndex + 1}):
311
312
  Kalan orijinal adımlar:
312
313
  ${remainingOriginal.map((s, i) => ` ${failedStepIndex + i + 1}. [${s.action}] ${s.description} → ${s.selector}`).join("\n")}
313
314
 
314
- Güncel DOM:
315
- ${domSnapshot.substring(0, 50000)}
315
+ Sayfanın Accessibility Tree'si:
316
+ ${domSnapshot}
316
317
 
317
318
  GÖREV: Ekranın mevcut durumunu analiz et. Amaca ulaşmak için kalan adımları yeniden planla.
318
319
  - Belki selector değişmiş → yeni selector bul
package/ai/runner.ts CHANGED
@@ -160,35 +160,7 @@ export async function runCommand(
160
160
  const healScreenshot = join(PATHS.screenshots, `${platform}_heal_${stepIdx}.png`);
161
161
  await page.screenshot({ path: healScreenshot });
162
162
 
163
- const domSnap = await page.evaluate(`(function() {
164
- var SKIP = {"script":1,"style":1,"noscript":1,"link":1,"meta":1};
165
- function ser(el, d, b) {
166
- if (d > 15 || b.c <= 0) return "";
167
- var t = el.tagName.toLowerCase();
168
- if (SKIP[t]) return "";
169
- if (t === "svg") return "<svg/>";
170
- var st = window.getComputedStyle(el);
171
- if (st.display === "none" || st.visibility === "hidden") return "";
172
- var at = [];
173
- for (var i = 0; i < el.attributes.length; i++) {
174
- var a = el.attributes[i];
175
- if (a.name === "style") continue;
176
- at.push(a.name + '="' + (a.value.length > 150 ? a.value.substring(0,150) : a.value).replace(/"/g,"'") + '"');
177
- }
178
- var as = at.length ? " " + at.join(" ") : "";
179
- var dt = "";
180
- for (var j = 0; j < el.childNodes.length; j++) {
181
- if (el.childNodes[j].nodeType === 3) { var tx = (el.childNodes[j].textContent||"").trim(); if (tx) dt += tx.substring(0,100); }
182
- }
183
- var ch = "";
184
- for (var k = 0; k < el.children.length; k++) ch += ser(el.children[k], d+1, b);
185
- if (!as && !dt && !ch) return "";
186
- var r = "<"+t+as+">"+dt+ch+"</"+t+">";
187
- b.c -= r.length;
188
- return r;
189
- }
190
- return ser(document.body, 0, {c:500000});
191
- })()`);
163
+ const ariaSnap = await page.locator('body').ariaSnapshot();
192
164
 
193
165
  // AI kaldığı yerden devam etsin (her denemede effort artar)
194
166
  const newSteps = await healAndContinue(
@@ -196,7 +168,7 @@ export async function runCommand(
196
168
  stepIdx,
197
169
  steps,
198
170
  healScreenshot,
199
- domSnap as string,
171
+ ariaSnap,
200
172
  err.message,
201
173
  post.content || step.description,
202
174
  effort
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "social-agent-cli",
3
- "version": "1.4.0",
3
+ "version": "1.5.0",
4
4
  "description": "AI-powered social media agent - free APIs + browser automation with self-healing selectors",
5
5
  "type": "module",
6
6
  "bin": {
@@ -162,48 +162,14 @@ export class BrowserDriver {
162
162
  const screenshotPath = join(PATHS.screenshots, `${this.platform}_learn_${actionName}.png`);
163
163
  await page.screenshot({ path: screenshotPath, fullPage: false });
164
164
 
165
- // DOM snapshot - evaluate'e string olarak geç (tsx __name sorunu önlenir)
166
- const dom = await page.evaluate(`(function() {
167
- var SKIP = {"script":1,"style":1,"noscript":1,"link":1,"meta":1};
168
- function ser(el, depth, budget) {
169
- if (depth > 15 || budget.c <= 0) return "";
170
- var tag = el.tagName.toLowerCase();
171
- if (SKIP[tag]) return "";
172
- if (tag === "svg") return "<svg/>";
173
- var st = window.getComputedStyle(el);
174
- if (st.display === "none" || st.visibility === "hidden") return "";
175
- var attrs = [];
176
- for (var i = 0; i < el.attributes.length; i++) {
177
- var a = el.attributes[i];
178
- if (a.name === "style") continue;
179
- var v = a.value.length > 150 ? a.value.substring(0,150) : a.value;
180
- attrs.push(a.name + '="' + v.replace(/"/g, "'") + '"');
181
- }
182
- var as = attrs.length ? " " + attrs.join(" ") : "";
183
- var dt = "";
184
- for (var j = 0; j < el.childNodes.length; j++) {
185
- if (el.childNodes[j].nodeType === 3) {
186
- var t = (el.childNodes[j].textContent || "").trim();
187
- if (t) dt += t.substring(0, 100);
188
- }
189
- }
190
- var ch = "";
191
- for (var k = 0; k < el.children.length; k++) {
192
- ch += ser(el.children[k], depth + 1, budget);
193
- }
194
- if (!as && !dt && !ch) return "";
195
- var r = "<" + tag + as + ">" + dt + ch + "</" + tag + ">";
196
- budget.c -= r.length;
197
- return r;
198
- }
199
- return ser(document.body, 0, {c: 500000});
200
- })()`);
165
+ // ARIA Snapshot - accessibility tree (98x daha küçük, sadece interaktif elementler)
166
+ const ariaSnapshot = await page.locator('body').ariaSnapshot();
201
167
 
202
168
  console.log(`[${this.platform}] Screenshot: ${screenshotPath}`);
203
- console.log(`[${this.platform}] DOM: ${dom.length} karakter`);
169
+ console.log(`[${this.platform}] Accessibility tree: ${ariaSnapshot.length} bytes`);
204
170
  console.log(`[${this.platform}] Claude analiz ediyor...`);
205
171
 
206
- const map = await generateMap(this.platform, screenshotPath, dom, taskDescription, actionName);
172
+ const map = await generateMap(this.platform, screenshotPath, ariaSnapshot, taskDescription, actionName);
207
173
 
208
174
  console.log(`[${this.platform}] "${actionName}" map oluşturuldu (${map.steps.length} adım)`);
209
175
  await this.close();