web-agent-bridge 1.0.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Web Agent Bridge Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.ar.md ADDED
@@ -0,0 +1,446 @@
1
+ <div dir="rtl" align="right">
2
+
3
+ # Web Agent Bridge (WAB) — جسر الوكيل الذكي
4
+
5
+ [![CI](https://github.com/abokenan444/web-agent-bridge/actions/workflows/ci.yml/badge.svg)](https://github.com/abokenan444/web-agent-bridge/actions/workflows/ci.yml)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
+ [![Node.js](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)](https://nodejs.org/)
8
+ [![Docker](https://img.shields.io/badge/docker-ready-blue.svg)](https://hub.docker.com/)
9
+
10
+ **برمجية وسيطة مفتوحة المصدر تربط وكلاء الذكاء الاصطناعي بالمواقع الإلكترونية — توفر واجهة أوامر موحدة للأتمتة الذكية.**
11
+
12
+ يتيح WAB لأصحاب المواقع إضافة سكريبت يكشف واجهة `window.AICommands` لوكلاء الذكاء الاصطناعي. بدلاً من تحليل شيفرة HTML المعقدة، يقرأ الوكيل قائمة الإجراءات المتاحة وينفذها بدقة وأمان.
13
+
14
+ **[English Documentation](README.md)** | **العربية**
15
+
16
+ ---
17
+
18
+ ## ✨ المميزات
19
+
20
+ - **اكتشاف تلقائي** — يكتشف الأزرار والنماذج وروابط التنقل تلقائياً
21
+ - **نظام صلاحيات** — تحكم دقيق بما يمكن لوكلاء الذكاء الاصطناعي فعله
22
+ - **واجهة موحدة** — كائن `window.AICommands` موحد يستخدمه أي وكيل
23
+ - **تحديد معدل الاستخدام** — حماية مدمجة ضد الإساءة
24
+ - **لوحة تحليلات** — تتبع تفاعل وكلاء الذكاء الاصطناعي مع موقعك
25
+ - **إجراءات مخصصة** — سجّل إجراءاتك الخاصة مع معالجات مخصصة
26
+ - **تحليلات فورية** — عبر WebSocket لمراقبة النشاط لحظياً
27
+ - **توافق WebDriver BiDi** — دعم البروتوكولات المعيارية للمتصفحات
28
+ - **مستويات اشتراك** — نواة مجانية + ميزات متقدمة مدفوعة
29
+ - **نظام أحداث** — اشترك في أحداث الجسر للمراقبة
30
+ - **صندوق حماية أمني** — عزل كامل مع توكنات جلسة، تحقق من الأصل، تأمين تلقائي
31
+ - **محددات ذاتية الإصلاح** — مقاومة لتغييرات DOM في المواقع الديناميكية (SPA)
32
+ - **وضع التخفي** — محاكاة سلوك بشري (حركة فأرة، كتابة طبيعية، تمرير تدريجي)
33
+ - **قواعد بيانات متعددة** — SQLite + PostgreSQL + MySQL عبر محوّلات قابلة للتبديل
34
+ - **SDK للوكلاء** — حزمة أدوات جاهزة لبناء وكلاء ذكاء اصطناعي
35
+
36
+ ---
37
+
38
+ ## 🚀 البدء السريع
39
+
40
+ ### ١. التثبيت والتشغيل
41
+
42
+ ```bash
43
+ # الطريقة أ: استنساخ وتشغيل
44
+ git clone https://github.com/abokenan444/web-agent-bridge.git
45
+ cd web-agent-bridge
46
+ npm install
47
+ cp .env.example .env
48
+ npm start
49
+
50
+ # الطريقة ب: npx (أمر واحد)
51
+ npx web-agent-bridge start
52
+
53
+ # الطريقة ج: Docker
54
+ docker compose up -d
55
+ ```
56
+
57
+ ### ٢. إنشاء حساب
58
+
59
+ زُر `http://localhost:3000/register` وأنشئ حساباً، ثم أضف موقعك من لوحة التحكم.
60
+
61
+ ### ٣. إضافة السكريبت لموقعك
62
+
63
+ ```html
64
+ <script>
65
+ window.AIBridgeConfig = {
66
+ licenseKey: "WAB-XXXXX-XXXXX-XXXXX-XXXXX",
67
+ agentPermissions: {
68
+ readContent: true,
69
+ click: true,
70
+ fillForms: true,
71
+ scroll: true
72
+ }
73
+ };
74
+ </script>
75
+ <script src="http://localhost:3000/script/ai-agent-bridge.js"></script>
76
+ ```
77
+
78
+ ### ٤. الآن يمكن لوكلاء الذكاء الاصطناعي التفاعل
79
+
80
+ ```javascript
81
+ // من جانب وكيل الذكاء الاصطناعي
82
+ const bridge = window.AICommands;
83
+ const actions = bridge.getActions(); // اكتشاف الإجراءات
84
+ await bridge.execute("signup"); // تنفيذ إجراء
85
+ const info = bridge.getPageInfo(); // معلومات الصفحة
86
+ ```
87
+
88
+ ---
89
+
90
+ ## 📁 هيكل المشروع
91
+
92
+ ```
93
+ web-agent-bridge/
94
+ ├── server/ # خادم Express.js
95
+ │ ├── index.js # نقطة البداية
96
+ │ ├── ws.js # WebSocket للتحليلات الفورية
97
+ │ ├── routes/
98
+ │ │ ├── auth.js # المصادقة (تسجيل/دخول)
99
+ │ │ ├── api.js # واجهة المواقع والتحليلات
100
+ │ │ └── license.js # التحقق من التراخيص والتتبع
101
+ │ ├── middleware/
102
+ │ │ └── auth.js # وسيط JWT
103
+ │ └── models/
104
+ │ └── db.js # قاعدة بيانات SQLite
105
+ ├── public/ # الواجهة الأمامية
106
+ │ ├── index.html # الصفحة الرئيسية
107
+ │ ├── dashboard.html # لوحة التحكم
108
+ │ ├── docs.html # التوثيق
109
+ │ ├── login.html # تسجيل الدخول
110
+ │ └── register.html # التسجيل
111
+ ├── script/
112
+ │ └── ai-agent-bridge.js # سكريبت الجسر
113
+ ├── tests/ # الاختبارات
114
+ ├── Dockerfile # حاوية Docker
115
+ ├── docker-compose.yml # تشغيل Docker
116
+ └── package.json
117
+ ```
118
+
119
+ ---
120
+
121
+ ## 🔌 واجهات API
122
+
123
+ ### المصادقة
124
+ | النقطة | الطريقة | الوصف |
125
+ |---|---|---|
126
+ | `/api/auth/register` | POST | إنشاء حساب |
127
+ | `/api/auth/login` | POST | تسجيل الدخول |
128
+ | `/api/auth/me` | GET | بيانات المستخدم الحالي |
129
+
130
+ ### المواقع
131
+ | النقطة | الطريقة | الوصف |
132
+ |---|---|---|
133
+ | `/api/sites` | GET | قائمة مواقعك |
134
+ | `/api/sites` | POST | إضافة موقع جديد |
135
+ | `/api/sites/:id` | GET | تفاصيل الموقع |
136
+ | `/api/sites/:id/config` | PUT | تحديث الإعدادات |
137
+ | `/api/sites/:id/tier` | PUT | تغيير مستوى الاشتراك |
138
+ | `/api/sites/:id` | DELETE | حذف الموقع |
139
+ | `/api/sites/:id/snippet` | GET | كود التضمين |
140
+ | `/api/sites/:id/analytics` | GET | بيانات التحليلات |
141
+
142
+ ### التراخيص (عامة)
143
+ | النقطة | الطريقة | الوصف |
144
+ |---|---|---|
145
+ | `/api/license/verify` | POST | التحقق من مفتاح الترخيص |
146
+ | `/api/license/track` | POST | تسجيل حدث تحليلي |
147
+
148
+ ### WebSocket
149
+ | النقطة | الوصف |
150
+ |---|---|
151
+ | `ws://localhost:3000/ws/analytics` | تحليلات فورية لحظية |
152
+
153
+ ---
154
+
155
+ ## ⚙️ واجهة سكريبت الجسر
156
+
157
+ عند التحميل، يكشف `window.AICommands` الطرق التالية:
158
+
159
+ | الطريقة | الوصف |
160
+ |---|---|
161
+ | `getActions(category?)` | قائمة الإجراءات المتاحة |
162
+ | `getAction(name)` | الحصول على إجراء محدد |
163
+ | `execute(name, params?)` | تنفيذ إجراء |
164
+ | `readContent(selector)` | قراءة محتوى عنصر |
165
+ | `getPageInfo()` | معلومات الصفحة والجسر |
166
+ | `waitForElement(selector, timeout?)` | انتظار ظهور عنصر DOM |
167
+ | `waitForNavigation(timeout?)` | انتظار تغيير العنوان |
168
+ | `registerAction(def)` | تسجيل إجراء مخصص |
169
+ | `authenticate(key, meta?)` | مصادقة الوكيل |
170
+ | `refresh()` | إعادة مسح الصفحة |
171
+ | `toBiDi()` | الحصول على سياق WebDriver BiDi |
172
+ | `executeBiDi(command)` | تنفيذ أمر بصيغة BiDi |
173
+
174
+ ---
175
+
176
+ ## 🔧 الإعدادات
177
+
178
+ ```javascript
179
+ window.AIBridgeConfig = {
180
+ licenseKey: "WAB-XXXXX-XXXXX-XXXXX-XXXXX",
181
+ agentPermissions: {
182
+ readContent: true, // قراءة النص
183
+ click: true, // النقر على العناصر
184
+ fillForms: false, // ملء/إرسال النماذج
185
+ scroll: true, // تمرير الصفحة
186
+ navigate: false, // التنقل بين الصفحات
187
+ apiAccess: false, // استدعاء API داخلي (Pro+)
188
+ automatedLogin: false, // تسجيل دخول تلقائي (Starter+)
189
+ extractData: false // استخراج البيانات (Pro+)
190
+ },
191
+ restrictions: {
192
+ allowedSelectors: [],
193
+ blockedSelectors: [".private", "[data-private]"],
194
+ requireLoginForActions: ["apiAccess"],
195
+ rateLimit: { maxCallsPerMinute: 60 }
196
+ },
197
+ logging: { enabled: false, level: "basic" }
198
+ };
199
+ ```
200
+
201
+ ---
202
+
203
+ ## 🔄 توافق WebDriver BiDi
204
+
205
+ يدعم السكريبت بروتوكول WebDriver BiDi للتواصل مع الوكلاء عبر معايير موحدة:
206
+
207
+ ```javascript
208
+ // الحصول على سياق BiDi
209
+ const context = window.__wab_bidi.getContext();
210
+
211
+ // إرسال أمر BiDi
212
+ const result = await window.__wab_bidi.send({
213
+ id: 1,
214
+ method: 'wab.executeAction',
215
+ params: { name: 'signup', data: {} }
216
+ });
217
+
218
+ // الأوامر المدعومة:
219
+ // wab.getContext — سياق الصفحة والقدرات
220
+ // wab.getActions — قائمة الإجراءات
221
+ // wab.executeAction — تنفيذ إجراء
222
+ // wab.readContent — قراءة محتوى
223
+ // wab.getPageInfo — معلومات الصفحة
224
+ ```
225
+
226
+ ---
227
+
228
+ ## 📊 التحليلات الفورية (WebSocket)
229
+
230
+ اتصل بنقطة WebSocket لتلقي إشعارات فورية:
231
+
232
+ ```javascript
233
+ const ws = new WebSocket('ws://localhost:3000/ws/analytics');
234
+
235
+ // المصادقة
236
+ ws.onopen = () => {
237
+ ws.send(JSON.stringify({
238
+ type: 'auth',
239
+ token: 'your-jwt-token',
240
+ siteId: 'your-site-id'
241
+ }));
242
+ };
243
+
244
+ // تلقي الأحداث
245
+ ws.onmessage = (event) => {
246
+ const data = JSON.parse(event.data);
247
+ console.log('حدث جديد:', data);
248
+ // { type: 'analytic', actionName: '...', agentId: '...', success: true }
249
+ };
250
+ ```
251
+
252
+ ---
253
+
254
+ ## 💰 مستويات الاشتراك
255
+
256
+ | الميزة | مجاني | Starter | Pro | Enterprise |
257
+ |---|:---:|:---:|:---:|:---:|
258
+ | اكتشاف تلقائي | ✓ | ✓ | ✓ | ✓ |
259
+ | نقر/تمرير | ✓ | ✓ | ✓ | ✓ |
260
+ | ملء النماذج | ✓ | ✓ | ✓ | ✓ |
261
+ | تسجيل أساسي | ✓ | ✓ | ✓ | ✓ |
262
+ | تسجيل دخول تلقائي | ✗ | ✓ | ✓ | ✓ |
263
+ | لوحة تحليلات | ✗ | ✓ | ✓ | ✓ |
264
+ | وصول API | ✗ | ✗ | ✓ | ✓ |
265
+ | استخراج البيانات | ✗ | ✗ | ✓ | ✓ |
266
+ | تحديد معدل مخصص | ✗ | ✗ | ✗ | ✓ |
267
+ | Webhooks | ✗ | ✗ | ✗ | ✓ |
268
+
269
+ ---
270
+
271
+ ## 🐳 تشغيل باستخدام Docker
272
+
273
+ ```bash
274
+ # بناء وتشغيل
275
+ docker compose up -d
276
+
277
+ # أو البناء يدوياً
278
+ docker build -t web-agent-bridge .
279
+ docker run -p 3000:3000 -e JWT_SECRET=your-secret web-agent-bridge
280
+ ```
281
+
282
+ ---
283
+
284
+ ## 🧪 الاختبارات
285
+
286
+ ```bash
287
+ npm test
288
+ ```
289
+
290
+ تشمل الاختبارات:
291
+ - واجهات المصادقة (تسجيل، دخول، التحقق من التوكن)
292
+ - واجهات إدارة المواقع (CRUD، الإعدادات، المستويات)
293
+ - واجهات التراخيص (التحقق، التتبع)
294
+ - خدمة الصفحات الثابتة
295
+
296
+ ---
297
+
298
+ ## 🤖 Agent SDK — حزمة أدوات الوكيل
299
+
300
+ يضم WAB حزمة SDK جاهزة لبناء وكلاء ذكاء اصطناعي. راجع [`sdk/README.md`](sdk/README.md) للتوثيق الكامل.
301
+
302
+ ```javascript
303
+ const puppeteer = require('puppeteer');
304
+ const { WABAgent } = require('web-agent-bridge/sdk');
305
+
306
+ const browser = await puppeteer.launch();
307
+ const page = await browser.newPage();
308
+ const agent = new WABAgent(page);
309
+
310
+ await agent.navigateAndWait('https://example.com');
311
+ const actions = await agent.getActions();
312
+ await agent.execute('signup', { email: 'user@test.com' });
313
+ await browser.close();
314
+ ```
315
+
316
+ ---
317
+
318
+ ## 📚 أمثلة الوكلاء
319
+
320
+ أمثلة جاهزة للتشغيل في مجلد [`examples/`](examples/):
321
+
322
+ | الملف | الوصف |
323
+ |---|---|
324
+ | `puppeteer-agent.js` | وكيل أساسي باستخدام Puppeteer و `window.AICommands` |
325
+ | `bidi-agent.js` | وكيل يستخدم بروتوكول WebDriver BiDi عبر `window.__wab_bidi` |
326
+ | `vision-agent.js` | وكيل رؤية — يحل أوصاف اللغة الطبيعية إلى إجراءات WAB |
327
+
328
+ ```bash
329
+ node examples/puppeteer-agent.js http://localhost:3000
330
+ node examples/bidi-agent.js http://localhost:3000
331
+ node examples/vision-agent.js http://localhost:3000
332
+ ```
333
+
334
+ ---
335
+
336
+ ## 🗄️ دعم قواعد بيانات متعددة
337
+
338
+ يستخدم WAB قاعدة SQLite افتراضياً ويدعم PostgreSQL و MySQL عبر محوّلات قاعدة البيانات.
339
+
340
+ ```bash
341
+ # SQLite (افتراضي — لا حاجة لإعداد)
342
+ npm start
343
+
344
+ # PostgreSQL
345
+ npm install pg
346
+ DB_ADAPTER=postgresql DATABASE_URL=postgres://user:pass@localhost:5432/wab npm start
347
+
348
+ # MySQL
349
+ npm install mysql2
350
+ DB_ADAPTER=mysql DATABASE_URL=mysql://user:pass@localhost:3306/wab npm start
351
+ ```
352
+
353
+ ---
354
+
355
+ ## 💻 واجهة سطر الأوامر (CLI)
356
+
357
+ ```bash
358
+ # تشغيل الخادم
359
+ npx web-agent-bridge start
360
+ npx web-agent-bridge start --port 8080
361
+
362
+ # تهيئة مشروع جديد
363
+ npx web-agent-bridge init
364
+ ```
365
+
366
+ ---
367
+
368
+ ## 🔒 الأمان
369
+
370
+ ### صندوق الحماية الأمني (Security Sandbox)
371
+
372
+ كل نسخة من الجسر تعمل داخل صندوق حماية يوفر:
373
+
374
+ - **توكنات جلسة** — توكن تشفيري فريد لكل جلسة يمنع هجمات الإعادة (Replay Attacks)
375
+ - **التحقق من الأصل** — فقط الأصول المصرح بها يمكنها التفاعل مع الجسر
376
+ - **تحقق من الأوامر** — كل أمر يُفحص من حيث الصيغة والطول وقائمة الحظر
377
+ - **سجل تدقيق** — كل إجراء يُسجّل بالتوقيت وبصمة الوكيل والحالة
378
+ - **حماية التصعيد** — محاولات الوصول لميزات أعلى تؤدي لتأمين تلقائي بعد 5 مخالفات
379
+ - **القفل التلقائي** — الجسر يصبح للقراءة فقط عند اكتشاف انتهاكات أمنية
380
+
381
+ ### حماية الخادم
382
+
383
+ - **CSP (سياسة أمان المحتوى)** — حماية ضد XSS وحقن السكريبت
384
+ - **حماية iframe** — `frame-ancestors: 'none'` يمنع تحميل الموقع في إطارات غير موثوقة
385
+ - **تشفير كلمات المرور** — bcrypt بتكلفة 12
386
+ - **JWT** — توكن مؤقت ينتهي بعد 7 أيام
387
+ - **Rate Limiting** — تحديد معدل الطلبات
388
+ - **Helmet** — حماية رؤوس HTTP
389
+ - **حظر المحددات** — تقييد وصول الوكيل لعناصر محددة
390
+
391
+ ---
392
+
393
+ ## 🔄 المحددات ذاتية الإصلاح (Self-Healing Selectors)
394
+
395
+ المواقع الحديثة (SPAs) تتغير باستمرار. نظام الإصلاح الذاتي يضمن استمرار عمل المحددات:
396
+
397
+ 1. **البصمات** — عند اكتشاف الإجراءات، يُخزن WAB بصمة غنية لكل عنصر
398
+ 2. **7 استراتيجيات** — عند تعطل محدد، يجرب WAB: `data-wab-id`، `data-testid`، ID، `aria-label`، `name`، مطابقة نصية ضبابية، موضع + دور
399
+ 3. **مراقب SPA** — `MutationObserver` يرصد تغييرات DOM ويعيد اكتشاف الإجراءات تلقائياً
400
+
401
+ ```javascript
402
+ // أضف هذا للاستقرار الأقصى
403
+ <button data-wab-id="signup-btn">إنشاء حساب</button>
404
+ ```
405
+
406
+ ---
407
+
408
+ ## 🥷 وضع التخفي (Stealth Mode)
409
+
410
+ لمواجهة أنظمة الحماية من البوتات:
411
+
412
+ ```javascript
413
+ window.AIBridgeConfig = { stealth: { enabled: true } };
414
+ ```
415
+
416
+ | الميزة | الوصف |
417
+ |---|---|
418
+ | سلسلة أحداث الفأرة | `mouseover → mouseenter → mousemove → mousedown → mouseup → click` |
419
+ | محاكاة الكتابة | حرف بحرف مع تأخير 30-120 مللي ثانية |
420
+ | تمرير تدريجي | خطوات متعددة بسرعة متغيرة |
421
+ | تأخيرات عشوائية | 50-400 مللي ثانية بين الإجراءات |
422
+
423
+ ---
424
+
425
+ ## 🛠️ التقنيات
426
+
427
+ - **الخلفية**: Node.js + Express + WebSocket
428
+ - **قاعدة البيانات**: SQLite / PostgreSQL / MySQL
429
+ - **المصادقة**: JWT + bcrypt
430
+ - **الواجهة**: HTML/CSS/JS بدون أطر عمل
431
+ - **الأمان**: Helmet, CORS, CSP, Rate Limiting, Security Sandbox
432
+ - **الحاويات**: Docker + Docker Compose
433
+
434
+ ---
435
+
436
+ ## 🤝 المساهمة
437
+
438
+ نرحب بالمساهمات! اقرأ [دليل المساهمة](CONTRIBUTING.md) للبدء.
439
+
440
+ ---
441
+
442
+ ## 📄 الرخصة
443
+
444
+ MIT — مجاني للاستخدام والتعديل والتوزيع.
445
+
446
+ </div>