sentienceapi 0.90.1

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 (107) hide show
  1. package/LICENSE.md +43 -0
  2. package/README.md +946 -0
  3. package/dist/actions.d.ts +54 -0
  4. package/dist/actions.d.ts.map +1 -0
  5. package/dist/actions.js +349 -0
  6. package/dist/actions.js.map +1 -0
  7. package/dist/agent.d.ts +157 -0
  8. package/dist/agent.d.ts.map +1 -0
  9. package/dist/agent.js +437 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/browser.d.ts +46 -0
  12. package/dist/browser.d.ts.map +1 -0
  13. package/dist/browser.js +622 -0
  14. package/dist/browser.js.map +1 -0
  15. package/dist/cli.d.ts +5 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +174 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/conversational-agent.d.ts +123 -0
  20. package/dist/conversational-agent.d.ts.map +1 -0
  21. package/dist/conversational-agent.js +327 -0
  22. package/dist/conversational-agent.js.map +1 -0
  23. package/dist/expect.d.ts +16 -0
  24. package/dist/expect.d.ts.map +1 -0
  25. package/dist/expect.js +66 -0
  26. package/dist/expect.js.map +1 -0
  27. package/dist/generator.d.ts +16 -0
  28. package/dist/generator.d.ts.map +1 -0
  29. package/dist/generator.js +205 -0
  30. package/dist/generator.js.map +1 -0
  31. package/dist/index.d.ts +21 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +70 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/inspector.d.ts +13 -0
  36. package/dist/inspector.d.ts.map +1 -0
  37. package/dist/inspector.js +147 -0
  38. package/dist/inspector.js.map +1 -0
  39. package/dist/llm-provider.d.ts +60 -0
  40. package/dist/llm-provider.d.ts.map +1 -0
  41. package/dist/llm-provider.js +106 -0
  42. package/dist/llm-provider.js.map +1 -0
  43. package/dist/query.d.ts +8 -0
  44. package/dist/query.d.ts.map +1 -0
  45. package/dist/query.js +337 -0
  46. package/dist/query.js.map +1 -0
  47. package/dist/read.d.ts +40 -0
  48. package/dist/read.d.ts.map +1 -0
  49. package/dist/read.js +86 -0
  50. package/dist/read.js.map +1 -0
  51. package/dist/recorder.d.ts +44 -0
  52. package/dist/recorder.d.ts.map +1 -0
  53. package/dist/recorder.js +256 -0
  54. package/dist/recorder.js.map +1 -0
  55. package/dist/screenshot.d.ts +17 -0
  56. package/dist/screenshot.d.ts.map +1 -0
  57. package/dist/screenshot.js +37 -0
  58. package/dist/screenshot.js.map +1 -0
  59. package/dist/snapshot.d.ts +23 -0
  60. package/dist/snapshot.d.ts.map +1 -0
  61. package/dist/snapshot.js +187 -0
  62. package/dist/snapshot.js.map +1 -0
  63. package/dist/tracing/cloud-sink.d.ts +74 -0
  64. package/dist/tracing/cloud-sink.d.ts.map +1 -0
  65. package/dist/tracing/cloud-sink.js +262 -0
  66. package/dist/tracing/cloud-sink.js.map +1 -0
  67. package/dist/tracing/index.d.ts +12 -0
  68. package/dist/tracing/index.d.ts.map +1 -0
  69. package/dist/tracing/index.js +28 -0
  70. package/dist/tracing/index.js.map +1 -0
  71. package/dist/tracing/jsonl-sink.d.ts +41 -0
  72. package/dist/tracing/jsonl-sink.d.ts.map +1 -0
  73. package/dist/tracing/jsonl-sink.js +168 -0
  74. package/dist/tracing/jsonl-sink.js.map +1 -0
  75. package/dist/tracing/sink.d.ts +24 -0
  76. package/dist/tracing/sink.d.ts.map +1 -0
  77. package/dist/tracing/sink.js +15 -0
  78. package/dist/tracing/sink.js.map +1 -0
  79. package/dist/tracing/tracer-factory.d.ts +57 -0
  80. package/dist/tracing/tracer-factory.d.ts.map +1 -0
  81. package/dist/tracing/tracer-factory.js +274 -0
  82. package/dist/tracing/tracer-factory.js.map +1 -0
  83. package/dist/tracing/tracer.d.ts +74 -0
  84. package/dist/tracing/tracer.d.ts.map +1 -0
  85. package/dist/tracing/tracer.js +131 -0
  86. package/dist/tracing/tracer.js.map +1 -0
  87. package/dist/tracing/types.d.ts +63 -0
  88. package/dist/tracing/types.d.ts.map +1 -0
  89. package/dist/tracing/types.js +8 -0
  90. package/dist/tracing/types.js.map +1 -0
  91. package/dist/types.d.ts +110 -0
  92. package/dist/types.d.ts.map +1 -0
  93. package/dist/types.js +6 -0
  94. package/dist/types.js.map +1 -0
  95. package/dist/utils.d.ts +29 -0
  96. package/dist/utils.d.ts.map +1 -0
  97. package/dist/utils.js +74 -0
  98. package/dist/utils.js.map +1 -0
  99. package/dist/wait.d.ts +20 -0
  100. package/dist/wait.d.ts.map +1 -0
  101. package/dist/wait.js +63 -0
  102. package/dist/wait.js.map +1 -0
  103. package/package.json +72 -0
  104. package/spec/README.md +72 -0
  105. package/spec/SNAPSHOT_V1.md +208 -0
  106. package/spec/sdk-types.md +259 -0
  107. package/spec/snapshot.schema.json +148 -0
@@ -0,0 +1,622 @@
1
+ "use strict";
2
+ /**
3
+ * Playwright browser harness with extension loading
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.SentienceBrowser = void 0;
40
+ const playwright_1 = require("playwright");
41
+ const path = __importStar(require("path"));
42
+ const fs = __importStar(require("fs"));
43
+ const os = __importStar(require("os"));
44
+ const url_1 = require("url");
45
+ class SentienceBrowser {
46
+ constructor(apiKey, apiUrl, headless, proxy, userDataDir, storageState) {
47
+ this.context = null;
48
+ this.browser = null;
49
+ this.page = null;
50
+ this.extensionPath = null;
51
+ this.userDataDir = null;
52
+ this._apiKey = apiKey;
53
+ // Determine headless mode
54
+ if (headless === undefined) {
55
+ // Default to true in CI, false locally
56
+ const ci = process.env.CI?.toLowerCase();
57
+ this.headless = ci === 'true' || ci === '1' || ci === 'yes';
58
+ }
59
+ else {
60
+ this.headless = headless;
61
+ }
62
+ // Configure API URL
63
+ if (apiKey) {
64
+ this._apiUrl = apiUrl || 'https://api.sentienceapi.com';
65
+ }
66
+ else {
67
+ this._apiUrl = undefined;
68
+ }
69
+ // Support proxy from parameter or environment variable
70
+ this._proxy = proxy || process.env.SENTIENCE_PROXY;
71
+ // Auth injection support
72
+ this._userDataDir = userDataDir;
73
+ this._storageState = storageState;
74
+ }
75
+ async start() {
76
+ // 1. Resolve Extension Path
77
+ // Handle: src/extension (local dev), dist/extension (prod), or ../sentience-chrome (monorepo)
78
+ let extensionSource = '';
79
+ const candidates = [
80
+ // Production / Installed Package
81
+ path.resolve(__dirname, '../extension'),
82
+ path.resolve(__dirname, 'extension'),
83
+ // Local Monorepo Dev
84
+ path.resolve(__dirname, '../../sentience-chrome'),
85
+ path.resolve(__dirname, '../../../sentience-chrome'),
86
+ // CI Artifact
87
+ path.resolve(process.cwd(), 'extension')
88
+ ];
89
+ for (const loc of candidates) {
90
+ if (fs.existsSync(path.join(loc, 'manifest.json'))) {
91
+ extensionSource = loc;
92
+ break;
93
+ }
94
+ }
95
+ if (!extensionSource) {
96
+ throw new Error(`Sentience extension not found. Checked:\n${candidates.map(c => `- ${c}`).join('\n')}\n` +
97
+ 'Ensure the extension is built/downloaded.');
98
+ }
99
+ // 2. Setup User Data Directory
100
+ if (this._userDataDir) {
101
+ // Use provided directory for persistent sessions
102
+ this.userDataDir = this._userDataDir;
103
+ if (!fs.existsSync(this.userDataDir)) {
104
+ fs.mkdirSync(this.userDataDir, { recursive: true });
105
+ }
106
+ }
107
+ else {
108
+ // Create temp directory (ephemeral, existing behavior)
109
+ this.userDataDir = fs.mkdtempSync(path.join(os.tmpdir(), 'sentience-ts-'));
110
+ }
111
+ this.extensionPath = path.join(this.userDataDir, 'extension');
112
+ // Copy extension to temp dir
113
+ this._copyRecursive(extensionSource, this.extensionPath);
114
+ // 3. Build Args
115
+ const args = [
116
+ `--disable-extensions-except=${this.extensionPath}`,
117
+ `--load-extension=${this.extensionPath}`,
118
+ '--disable-blink-features=AutomationControlled',
119
+ '--no-sandbox',
120
+ '--disable-infobars',
121
+ ];
122
+ // CRITICAL: Headless Extensions Support
123
+ // headless: true -> NO extensions.
124
+ // headless: false + args: '--headless=new' -> YES extensions.
125
+ if (this.headless) {
126
+ args.push('--headless=new');
127
+ }
128
+ // CRITICAL: WebRTC leak protection for datacenter usage with proxies
129
+ // Prevents WebRTC from leaking the real IP address even when using proxies
130
+ if (this._proxy) {
131
+ args.push('--disable-features=WebRtcHideLocalIpsWithMdns');
132
+ args.push('--force-webrtc-ip-handling-policy=disable_non_proxied_udp');
133
+ }
134
+ // 4. Parse proxy configuration
135
+ const proxyConfig = this.parseProxy(this._proxy);
136
+ // 5. Launch Browser
137
+ this.context = await playwright_1.chromium.launchPersistentContext(this.userDataDir, {
138
+ headless: false, // Must be false here, handled via args above
139
+ args: args,
140
+ viewport: { width: 1920, height: 1080 },
141
+ // Clean User-Agent to avoid "HeadlessChrome" detection
142
+ userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36',
143
+ proxy: proxyConfig, // Pass proxy configuration
144
+ // CRITICAL: Ignore HTTPS errors when using proxy (proxies often use self-signed certs)
145
+ ignoreHTTPSErrors: proxyConfig !== undefined
146
+ });
147
+ this.page = this.context.pages()[0] || await this.context.newPage();
148
+ // Inject storage state if provided (must be after context creation)
149
+ if (this._storageState) {
150
+ await this.injectStorageState(this._storageState);
151
+ }
152
+ // Apply context-level stealth patches (runs on every new page)
153
+ await this.context.addInitScript(() => {
154
+ // Early webdriver hiding - runs before any page script
155
+ // Use multiple strategies to completely hide webdriver
156
+ // Strategy 1: Try to delete it first
157
+ try {
158
+ delete navigator.webdriver;
159
+ }
160
+ catch (e) {
161
+ // Property might not be deletable
162
+ }
163
+ // Strategy 2: Redefine to return undefined and hide from enumeration
164
+ Object.defineProperty(navigator, 'webdriver', {
165
+ get: () => undefined,
166
+ configurable: true,
167
+ enumerable: false,
168
+ writable: false
169
+ });
170
+ // Strategy 3: Override 'in' operator check
171
+ const originalHasOwnProperty = Object.prototype.hasOwnProperty;
172
+ Object.prototype.hasOwnProperty = function (prop) {
173
+ if (this === navigator && (prop === 'webdriver' || prop === 'Webdriver')) {
174
+ return false;
175
+ }
176
+ return originalHasOwnProperty.call(this, prop);
177
+ };
178
+ });
179
+ // 5. Apply Comprehensive Stealth Patches
180
+ // Use both CDP (earlier) and addInitScript (backup) for maximum coverage
181
+ // Strategy A: Use CDP to inject at the earliest possible moment
182
+ const client = await this.page.context().newCDPSession(this.page);
183
+ await client.send('Page.addScriptToEvaluateOnNewDocument', {
184
+ source: `
185
+ // Aggressive webdriver hiding - must run before ANY page script
186
+ Object.defineProperty(navigator, 'webdriver', {
187
+ get: () => undefined,
188
+ configurable: true,
189
+ enumerable: false
190
+ });
191
+
192
+ // Override Object.getOwnPropertyDescriptor
193
+ const originalGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
194
+ Object.getOwnPropertyDescriptor = function(obj, prop) {
195
+ if (obj === navigator && (prop === 'webdriver' || prop === 'Webdriver')) {
196
+ return undefined;
197
+ }
198
+ return originalGetOwnPropertyDescriptor(obj, prop);
199
+ };
200
+
201
+ // Override Object.keys
202
+ const originalKeys = Object.keys;
203
+ Object.keys = function(obj) {
204
+ const keys = originalKeys(obj);
205
+ if (obj === navigator) {
206
+ return keys.filter(k => k !== 'webdriver' && k !== 'Webdriver');
207
+ }
208
+ return keys;
209
+ };
210
+
211
+ // Override Object.getOwnPropertyNames
212
+ const originalGetOwnPropertyNames = Object.getOwnPropertyNames;
213
+ Object.getOwnPropertyNames = function(obj) {
214
+ const names = originalGetOwnPropertyNames(obj);
215
+ if (obj === navigator) {
216
+ return names.filter(n => n !== 'webdriver' && n !== 'Webdriver');
217
+ }
218
+ return names;
219
+ };
220
+
221
+ // Override 'in' operator check
222
+ const originalHasOwnProperty = Object.prototype.hasOwnProperty;
223
+ Object.prototype.hasOwnProperty = function(prop) {
224
+ if (this === navigator && (prop === 'webdriver' || prop === 'Webdriver')) {
225
+ return false;
226
+ }
227
+ return originalHasOwnProperty.call(this, prop);
228
+ };
229
+ `
230
+ });
231
+ // Strategy B: Also use addInitScript as backup (runs after CDP but before page scripts)
232
+ await this.page.addInitScript(() => {
233
+ // 1. Hide navigator.webdriver (comprehensive approach for advanced detection)
234
+ // Advanced detection checks for property descriptor, so we need multiple strategies
235
+ try {
236
+ // Strategy 1: Try to delete the property
237
+ delete navigator.webdriver;
238
+ }
239
+ catch (e) {
240
+ // Property might not be deletable, continue with redefine
241
+ }
242
+ // Strategy 2: Redefine to return undefined (better than false)
243
+ // Also set enumerable: false to hide from Object.keys() checks
244
+ Object.defineProperty(navigator, 'webdriver', {
245
+ get: () => undefined,
246
+ configurable: true,
247
+ enumerable: false
248
+ });
249
+ // Strategy 3: Override Object.getOwnPropertyDescriptor only for navigator.webdriver
250
+ // This prevents advanced detection that checks the property descriptor
251
+ const originalGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
252
+ Object.getOwnPropertyDescriptor = function (obj, prop) {
253
+ if (obj === navigator && (prop === 'webdriver' || prop === 'Webdriver')) {
254
+ return undefined;
255
+ }
256
+ return originalGetOwnPropertyDescriptor(obj, prop);
257
+ };
258
+ // Strategy 4: Hide from Object.keys() and Object.getOwnPropertyNames()
259
+ const originalKeys = Object.keys;
260
+ Object.keys = function (obj) {
261
+ const keys = originalKeys(obj);
262
+ if (obj === navigator) {
263
+ return keys.filter(k => k !== 'webdriver' && k !== 'Webdriver');
264
+ }
265
+ return keys;
266
+ };
267
+ // Strategy 5: Hide from Object.getOwnPropertyNames()
268
+ const originalGetOwnPropertyNames = Object.getOwnPropertyNames;
269
+ Object.getOwnPropertyNames = function (obj) {
270
+ const names = originalGetOwnPropertyNames(obj);
271
+ if (obj === navigator) {
272
+ return names.filter(n => n !== 'webdriver' && n !== 'Webdriver');
273
+ }
274
+ return names;
275
+ };
276
+ // Strategy 6: Override hasOwnProperty to hide from 'in' operator checks
277
+ const originalHasOwnProperty = Object.prototype.hasOwnProperty;
278
+ Object.prototype.hasOwnProperty = function (prop) {
279
+ if (this === navigator && (prop === 'webdriver' || prop === 'Webdriver')) {
280
+ return false;
281
+ }
282
+ return originalHasOwnProperty.call(this, prop);
283
+ };
284
+ // 2. Inject window.chrome object (required for Chrome detection)
285
+ if (typeof window.chrome === 'undefined') {
286
+ window.chrome = {
287
+ runtime: {},
288
+ loadTimes: function () { },
289
+ csi: function () { },
290
+ app: {}
291
+ };
292
+ }
293
+ // 3. Patch navigator.plugins (should have length > 0)
294
+ // Only patch if plugins array is empty (headless mode issue)
295
+ const originalPlugins = navigator.plugins;
296
+ if (originalPlugins.length === 0) {
297
+ // Create a PluginArray-like object with minimal plugins
298
+ const fakePlugins = [
299
+ {
300
+ name: 'Chrome PDF Plugin',
301
+ filename: 'internal-pdf-viewer',
302
+ description: 'Portable Document Format',
303
+ length: 1,
304
+ item: function () { return null; },
305
+ namedItem: function () { return null; }
306
+ },
307
+ {
308
+ name: 'Chrome PDF Viewer',
309
+ filename: 'mhjfbmdgcfjbbpaeojofohoefgiehjai',
310
+ description: '',
311
+ length: 0,
312
+ item: function () { return null; },
313
+ namedItem: function () { return null; }
314
+ },
315
+ {
316
+ name: 'Native Client',
317
+ filename: 'internal-nacl-plugin',
318
+ description: '',
319
+ length: 0,
320
+ item: function () { return null; },
321
+ namedItem: function () { return null; }
322
+ }
323
+ ];
324
+ // Create PluginArray-like object (array-like but not a real array)
325
+ // This needs to behave like the real PluginArray for detection to pass
326
+ const pluginArray = {};
327
+ fakePlugins.forEach((plugin, index) => {
328
+ Object.defineProperty(pluginArray, index.toString(), {
329
+ value: plugin,
330
+ enumerable: true,
331
+ configurable: true
332
+ });
333
+ });
334
+ Object.defineProperty(pluginArray, 'length', {
335
+ value: fakePlugins.length,
336
+ enumerable: false,
337
+ configurable: false
338
+ });
339
+ pluginArray.item = function (index) {
340
+ return this[index] || null;
341
+ };
342
+ pluginArray.namedItem = function (name) {
343
+ for (let i = 0; i < this.length; i++) {
344
+ if (this[i] && this[i].name === name)
345
+ return this[i];
346
+ }
347
+ return null;
348
+ };
349
+ // Make it iterable (for for...of loops)
350
+ pluginArray[Symbol.iterator] = function* () {
351
+ for (let i = 0; i < this.length; i++) {
352
+ yield this[i];
353
+ }
354
+ };
355
+ // Make it array-like for Array.from() and spread
356
+ Object.setPrototypeOf(pluginArray, Object.create(null));
357
+ Object.defineProperty(navigator, 'plugins', {
358
+ get: () => pluginArray,
359
+ configurable: true,
360
+ enumerable: true
361
+ });
362
+ }
363
+ // 4. Ensure navigator.languages exists and has values
364
+ if (!navigator.languages || navigator.languages.length === 0) {
365
+ Object.defineProperty(navigator, 'languages', {
366
+ get: () => ['en-US', 'en'],
367
+ configurable: true
368
+ });
369
+ }
370
+ // 5. Patch permissions API (should exist)
371
+ if (!navigator.permissions) {
372
+ navigator.permissions = {
373
+ query: async (parameters) => {
374
+ return { state: 'granted', onchange: null };
375
+ }
376
+ };
377
+ }
378
+ });
379
+ // Inject API Key if present
380
+ if (this._apiKey) {
381
+ await this.page.addInitScript((key) => {
382
+ window.__SENTIENCE_API_KEY__ = key;
383
+ }, this._apiKey);
384
+ }
385
+ // Wait for extension background pages to spin up
386
+ await new Promise(r => setTimeout(r, 500));
387
+ }
388
+ async goto(url) {
389
+ const page = this.getPage();
390
+ await page.goto(url, { waitUntil: 'domcontentloaded' });
391
+ if (!(await this.waitForExtension(15000))) {
392
+ // Gather Debug Info
393
+ const diag = await page.evaluate(() => ({
394
+ sentience_global: typeof window.sentience !== 'undefined',
395
+ wasm_ready: window.sentience && window.sentience._wasmModule !== null,
396
+ ext_id: document.documentElement.dataset.sentienceExtensionId || 'not set',
397
+ url: window.location.href
398
+ })).catch(e => ({ error: String(e) }));
399
+ throw new Error('Extension failed to load after navigation.\n' +
400
+ `Path: ${this.extensionPath}\n` +
401
+ `Diagnostics: ${JSON.stringify(diag, null, 2)}`);
402
+ }
403
+ }
404
+ async waitForExtension(timeoutMs) {
405
+ const start = Date.now();
406
+ while (Date.now() - start < timeoutMs) {
407
+ try {
408
+ const ready = await this.page.evaluate(() => {
409
+ // Check for API AND Wasm Module (set by injected_api.js)
410
+ const s = window.sentience;
411
+ return s && s._wasmModule !== null; // Strict check for null (it's initialized as null)
412
+ });
413
+ if (ready)
414
+ return true;
415
+ }
416
+ catch (e) {
417
+ // Context invalid errors expected during navigation
418
+ }
419
+ await new Promise(r => setTimeout(r, 100));
420
+ }
421
+ return false;
422
+ }
423
+ getPage() {
424
+ if (!this.page) {
425
+ throw new Error('Browser not started. Call start() first.');
426
+ }
427
+ return this.page;
428
+ }
429
+ // Helper for recursive copy (fs.cp is Node 16.7+)
430
+ _copyRecursive(src, dest) {
431
+ if (fs.statSync(src).isDirectory()) {
432
+ if (!fs.existsSync(dest))
433
+ fs.mkdirSync(dest);
434
+ fs.readdirSync(src).forEach(child => {
435
+ this._copyRecursive(path.join(src, child), path.join(dest, child));
436
+ });
437
+ }
438
+ else {
439
+ fs.copyFileSync(src, dest);
440
+ }
441
+ }
442
+ // Expose API configuration (read-only)
443
+ getApiKey() {
444
+ return this._apiKey;
445
+ }
446
+ getApiUrl() {
447
+ return this._apiUrl;
448
+ }
449
+ /**
450
+ * Parse proxy connection string into Playwright format.
451
+ *
452
+ * @param proxyString - Standard format "http://username:password@host:port"
453
+ * or "socks5://user:pass@host:port"
454
+ * @returns Playwright proxy object or undefined if invalid
455
+ */
456
+ parseProxy(proxyString) {
457
+ if (!proxyString) {
458
+ return undefined;
459
+ }
460
+ try {
461
+ const parsed = new url_1.URL(proxyString);
462
+ // Validate scheme
463
+ const validSchemes = ['http:', 'https:', 'socks5:'];
464
+ if (!validSchemes.includes(parsed.protocol)) {
465
+ throw new Error(`Unsupported proxy scheme: ${parsed.protocol}`);
466
+ }
467
+ // Validate host and port
468
+ if (!parsed.hostname || !parsed.port) {
469
+ throw new Error('Proxy URL must include hostname and port');
470
+ }
471
+ // Build Playwright proxy object
472
+ const proxyConfig = {
473
+ server: `${parsed.protocol}//${parsed.hostname}:${parsed.port}`
474
+ };
475
+ // Add credentials if present
476
+ if (parsed.username && parsed.password) {
477
+ proxyConfig.username = parsed.username;
478
+ proxyConfig.password = parsed.password;
479
+ }
480
+ return proxyConfig;
481
+ }
482
+ catch (e) {
483
+ console.warn(`⚠️ [Sentience] Invalid proxy configuration: ${e.message}`);
484
+ console.warn(' Expected format: http://username:password@host:port');
485
+ return undefined;
486
+ }
487
+ }
488
+ /**
489
+ * Inject storage state (cookies + localStorage) into browser context.
490
+ *
491
+ * @param storageState - Path to JSON file, StorageState object, or plain object
492
+ */
493
+ async injectStorageState(storageState) {
494
+ // Load storage state
495
+ let state;
496
+ if (typeof storageState === 'string') {
497
+ // Load from file
498
+ const content = fs.readFileSync(storageState, 'utf-8');
499
+ state = JSON.parse(content);
500
+ }
501
+ else if (typeof storageState === 'object' && storageState !== null) {
502
+ // Already an object (StorageState or plain object)
503
+ state = storageState;
504
+ }
505
+ else {
506
+ throw new Error(`Invalid storageState type: ${typeof storageState}. ` +
507
+ 'Expected string (file path), StorageState, or object.');
508
+ }
509
+ // Inject cookies (works globally)
510
+ if (state.cookies && Array.isArray(state.cookies) && state.cookies.length > 0) {
511
+ // Convert to Playwright cookie format
512
+ const playwrightCookies = state.cookies.map(cookie => {
513
+ const playwrightCookie = {
514
+ name: cookie.name,
515
+ value: cookie.value,
516
+ domain: cookie.domain,
517
+ path: cookie.path || '/',
518
+ };
519
+ if (cookie.expires !== undefined) {
520
+ playwrightCookie.expires = cookie.expires;
521
+ }
522
+ if (cookie.httpOnly !== undefined) {
523
+ playwrightCookie.httpOnly = cookie.httpOnly;
524
+ }
525
+ if (cookie.secure !== undefined) {
526
+ playwrightCookie.secure = cookie.secure;
527
+ }
528
+ if (cookie.sameSite !== undefined) {
529
+ playwrightCookie.sameSite = cookie.sameSite;
530
+ }
531
+ return playwrightCookie;
532
+ });
533
+ await this.context.addCookies(playwrightCookies);
534
+ console.log(`✅ [Sentience] Injected ${state.cookies.length} cookie(s)`);
535
+ }
536
+ // Inject LocalStorage (requires navigation to each domain)
537
+ if (state.origins && Array.isArray(state.origins)) {
538
+ for (const originData of state.origins) {
539
+ const origin = originData.origin;
540
+ if (!origin) {
541
+ continue;
542
+ }
543
+ try {
544
+ // Navigate to origin
545
+ await this.page.goto(origin, { waitUntil: 'domcontentloaded', timeout: 10000 });
546
+ // Inject localStorage
547
+ if (originData.localStorage && Array.isArray(originData.localStorage)) {
548
+ // Convert to dict format for JavaScript
549
+ const localStorageDict = {};
550
+ for (const item of originData.localStorage) {
551
+ localStorageDict[item.name] = item.value;
552
+ }
553
+ await this.page.evaluate((localStorageData) => {
554
+ for (const [key, value] of Object.entries(localStorageData)) {
555
+ localStorage.setItem(key, value);
556
+ }
557
+ }, localStorageDict);
558
+ console.log(`✅ [Sentience] Injected ${originData.localStorage.length} localStorage item(s) for ${origin}`);
559
+ }
560
+ }
561
+ catch (error) {
562
+ console.warn(`⚠️ [Sentience] Failed to inject localStorage for ${origin}: ${error.message}`);
563
+ }
564
+ }
565
+ }
566
+ }
567
+ /**
568
+ * Get the browser context (for utilities like saveStorageState)
569
+ */
570
+ getContext() {
571
+ if (!this.context) {
572
+ throw new Error('Browser not started. Call start() first.');
573
+ }
574
+ return this.context;
575
+ }
576
+ async close() {
577
+ const cleanup = [];
578
+ // Close context first (this also closes the browser for persistent contexts)
579
+ if (this.context) {
580
+ cleanup.push(this.context.close().catch(() => {
581
+ // Ignore errors during cleanup
582
+ }));
583
+ this.context = null;
584
+ }
585
+ // Close browser if it exists (for non-persistent contexts)
586
+ if (this.browser) {
587
+ cleanup.push(this.browser.close().catch(() => {
588
+ // Ignore errors during cleanup
589
+ }));
590
+ this.browser = null;
591
+ }
592
+ // Wait for all cleanup to complete
593
+ await Promise.all(cleanup);
594
+ // Clean up extension directory
595
+ if (this.extensionPath && fs.existsSync(this.extensionPath)) {
596
+ try {
597
+ fs.rmSync(this.extensionPath, { recursive: true, force: true });
598
+ }
599
+ catch (e) {
600
+ // Ignore cleanup errors
601
+ }
602
+ this.extensionPath = null;
603
+ }
604
+ // Clean up user data directory (only if it's a temp directory)
605
+ // If user provided a custom userDataDir, we don't delete it (persistent sessions)
606
+ if (this.userDataDir && fs.existsSync(this.userDataDir)) {
607
+ // Only delete if it's a temp directory (starts with os.tmpdir())
608
+ const isTempDir = this.userDataDir.startsWith(os.tmpdir());
609
+ if (isTempDir) {
610
+ try {
611
+ fs.rmSync(this.userDataDir, { recursive: true, force: true });
612
+ }
613
+ catch (e) {
614
+ // Ignore cleanup errors
615
+ }
616
+ }
617
+ this.userDataDir = null;
618
+ }
619
+ }
620
+ }
621
+ exports.SentienceBrowser = SentienceBrowser;
622
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * CLI commands for Sentience SDK
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;GAEG"}