@apitap/core 1.5.3 → 1.5.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/skill/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/skill/generator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apitap/core",
3
- "version": "1.5.3",
3
+ "version": "1.5.4",
4
4
  "description": "Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -296,7 +296,7 @@ async function doHandoff(
296
296
  const cookieDomain = (c.domain || '').replace(/^\./, ''); // Remove leading dot
297
297
  return cookieDomain === domain ||
298
298
  cookieDomain.endsWith('.' + domain) ||
299
- domain.endsWith('.' + cookieDomain);
299
+ (domain.endsWith('.' + cookieDomain) && cookieDomain.includes('.'));
300
300
  });
301
301
 
302
302
  if (cookies.length === 0 && !authDetected) {
@@ -0,0 +1,501 @@
1
+ // src/capture/cdp-attach.ts
2
+ import http from 'node:http';
3
+ import { homedir } from 'node:os';
4
+ import type { CapturedExchange } from '../types.js';
5
+ import { shouldCapture } from './filter.js';
6
+ import { SkillGenerator, deduplicateAuth } from '../skill/generator.js';
7
+ import { signSkillFile } from '../skill/signing.js';
8
+ import { writeSkillFile } from '../skill/store.js';
9
+ import { AuthManager, getMachineId } from '../auth/manager.js';
10
+ import { deriveSigningKey } from '../auth/crypto.js';
11
+ import { join } from 'node:path';
12
+
13
+ // ---- Domain glob matching ----
14
+
15
+ /**
16
+ * Test if a hostname matches any pattern in a domain glob list.
17
+ * Empty list means "match all" (no filter).
18
+ *
19
+ * Glob rules:
20
+ * - "api.github.com" — exact match
21
+ * - "*.github.com" — matches any subdomain AND the bare domain
22
+ * (the *. prefix means "zero or more subdomains")
23
+ */
24
+ export function matchesDomainGlob(hostname: string, patterns: string[]): boolean {
25
+ if (patterns.length === 0) return true;
26
+
27
+ for (const pattern of patterns) {
28
+ if (pattern.startsWith('*.')) {
29
+ const base = pattern.slice(2); // "github.com"
30
+ // Match bare domain or any subdomain
31
+ if (hostname === base || hostname.endsWith('.' + base)) {
32
+ return true;
33
+ }
34
+ } else {
35
+ if (hostname === pattern) return true;
36
+ }
37
+ }
38
+ return false;
39
+ }
40
+
41
+ /**
42
+ * Parse a comma-separated domain pattern string into a list.
43
+ */
44
+ export function parseDomainPatterns(input: string | undefined): string[] {
45
+ if (!input || input.trim() === '') return [];
46
+ return input.split(',').map(p => p.trim()).filter(p => p.length > 0);
47
+ }
48
+
49
+ // ---- CDP HTTP discovery ----
50
+
51
+ function cdpGet<T>(url: string): Promise<T> {
52
+ return new Promise((resolve, reject) => {
53
+ http.get(url, (res) => {
54
+ let data = '';
55
+ res.on('data', (chunk: string) => data += chunk);
56
+ res.on('end', () => {
57
+ try { resolve(JSON.parse(data) as T); }
58
+ catch { reject(new Error(`Invalid JSON from ${url}`)); }
59
+ });
60
+ }).on('error', reject);
61
+ });
62
+ }
63
+
64
+ /**
65
+ * Discover Chrome's browser-level WebSocket URL via the /json/version endpoint.
66
+ */
67
+ export async function discoverBrowserWsUrl(port: number): Promise<{
68
+ wsUrl: string;
69
+ browser: string;
70
+ tabCount: number;
71
+ }> {
72
+ const versionInfo = await cdpGet<{
73
+ Browser: string;
74
+ webSocketDebuggerUrl: string;
75
+ }>(`http://127.0.0.1:${port}/json/version`);
76
+
77
+ const targets = await cdpGet<Array<{ type: string }>>(`http://127.0.0.1:${port}/json/list`);
78
+ const tabCount = targets.filter(t => t.type === 'page').length;
79
+
80
+ return {
81
+ wsUrl: versionInfo.webSocketDebuggerUrl,
82
+ browser: versionInfo.Browser,
83
+ tabCount,
84
+ };
85
+ }
86
+
87
+ // ---- CDP WebSocket session ----
88
+
89
+ /**
90
+ * Minimal CDP session over a single WebSocket.
91
+ * Supports browser-level commands and session-multiplexed target commands
92
+ * (via the sessionId parameter on send/events, using flatten: true).
93
+ */
94
+ export class CDPSession {
95
+ private ws: WebSocket | null = null;
96
+ private nextId = 1;
97
+ private callbacks = new Map<number, {
98
+ resolve: (v: unknown) => void;
99
+ reject: (e: Error) => void;
100
+ timer: ReturnType<typeof setTimeout>;
101
+ }>();
102
+ private listeners = new Map<string, Array<(params: Record<string, unknown>) => void>>();
103
+
104
+ constructor(private wsUrl: string) {}
105
+
106
+ connect(): Promise<void> {
107
+ return new Promise((resolve, reject) => {
108
+ this.ws = new WebSocket(this.wsUrl);
109
+ this.ws.onopen = () => resolve();
110
+ this.ws.onerror = (e) => reject(new Error(`CDP WebSocket error: ${e}`));
111
+ this.ws.onclose = () => {
112
+ // Reject all pending callbacks
113
+ for (const [, cb] of this.callbacks) {
114
+ clearTimeout(cb.timer);
115
+ cb.reject(new Error('CDP connection closed'));
116
+ }
117
+ this.callbacks.clear();
118
+ // Fire close listeners
119
+ for (const handler of this.listeners.get('close') ?? []) {
120
+ handler({});
121
+ }
122
+ };
123
+ this.ws.onmessage = (event) => {
124
+ const msg = JSON.parse(
125
+ typeof event.data === 'string' ? event.data : String(event.data),
126
+ ) as Record<string, unknown>;
127
+
128
+ // Handle command responses
129
+ if (msg.id !== undefined && this.callbacks.has(msg.id as number)) {
130
+ const cb = this.callbacks.get(msg.id as number)!;
131
+ clearTimeout(cb.timer);
132
+ this.callbacks.delete(msg.id as number);
133
+ if (msg.error) {
134
+ const err = msg.error as { message: string };
135
+ cb.reject(new Error(`CDP: ${err.message}`));
136
+ } else {
137
+ cb.resolve(msg.result);
138
+ }
139
+ }
140
+
141
+ // Handle events
142
+ if (msg.method) {
143
+ const sessionId = msg.sessionId as string | undefined;
144
+ // Fire session-scoped handlers: "sessionId:Event.name"
145
+ if (sessionId) {
146
+ const scopedKey = `${sessionId}:${msg.method as string}`;
147
+ for (const handler of this.listeners.get(scopedKey) ?? []) {
148
+ handler(msg.params as Record<string, unknown>);
149
+ }
150
+ }
151
+ // Fire global handlers (non-session-scoped)
152
+ for (const handler of this.listeners.get(msg.method as string) ?? []) {
153
+ handler({
154
+ ...(msg.params as Record<string, unknown>),
155
+ ...(sessionId ? { _sessionId: sessionId } : {}),
156
+ });
157
+ }
158
+ }
159
+ };
160
+ });
161
+ }
162
+
163
+ send(method: string, params: Record<string, unknown> = {}, sessionId?: string): Promise<Record<string, unknown>> {
164
+ const id = this.nextId++;
165
+ return new Promise((resolve, reject) => {
166
+ const timer = setTimeout(() => {
167
+ this.callbacks.delete(id);
168
+ reject(new Error(`CDP timeout: ${method}`));
169
+ }, 15000);
170
+ this.callbacks.set(id, {
171
+ resolve: resolve as (v: unknown) => void,
172
+ reject,
173
+ timer,
174
+ });
175
+ const msg: Record<string, unknown> = { id, method, params };
176
+ if (sessionId) msg.sessionId = sessionId;
177
+ this.ws!.send(JSON.stringify(msg));
178
+ });
179
+ }
180
+
181
+ on(event: string, handler: (params: Record<string, unknown>) => void): void {
182
+ if (!this.listeners.has(event)) this.listeners.set(event, []);
183
+ this.listeners.get(event)!.push(handler);
184
+ }
185
+
186
+ close(): void {
187
+ if (this.ws) {
188
+ this.ws.close();
189
+ this.ws = null;
190
+ }
191
+ }
192
+ }
193
+
194
+ // ---- Attach engine ----
195
+
196
+ export interface AttachOptions {
197
+ port: number;
198
+ domainPatterns: string[];
199
+ json: boolean;
200
+ onProgress?: (line: string) => void;
201
+ }
202
+
203
+ export interface AttachResult {
204
+ domains: Array<{
205
+ domain: string;
206
+ endpoints: number;
207
+ skillFile: string;
208
+ }>;
209
+ totalRequests: number;
210
+ filteredRequests: number;
211
+ duration: number;
212
+ }
213
+
214
+ /**
215
+ * Attach to a running Chrome instance via CDP, passively capture API traffic
216
+ * across all tabs, and generate signed skill files on SIGINT.
217
+ */
218
+ export async function attach(options: AttachOptions): Promise<AttachResult> {
219
+ const { port, domainPatterns, json } = options;
220
+ const log = (msg: string) => {
221
+ if (!json) process.stderr.write(msg + '\n');
222
+ options.onProgress?.(msg);
223
+ };
224
+
225
+ // SIGINT state — registered before any connection attempt (spec requirement)
226
+ let stopping = false;
227
+
228
+ // Phase 0: Discover browser
229
+ let browserInfo;
230
+ try {
231
+ browserInfo = await discoverBrowserWsUrl(port);
232
+ } catch {
233
+ log(`[attach] Cannot connect to Chrome on :${port}`);
234
+ log('');
235
+ log('To enable remote debugging, relaunch Chrome with:');
236
+ log(` google-chrome --remote-debugging-port=${port}`);
237
+ log('');
238
+ log('Or on macOS:');
239
+ log(` /Applications/Google\\ Chrome.app/Contents/MacOS/Google\\ Chrome --remote-debugging-port=${port}`);
240
+ process.exit(1);
241
+ }
242
+
243
+ log(`[attach] Connected to ${browserInfo.browser} on :${port} (${browserInfo.tabCount} tabs)`);
244
+ if (domainPatterns.length > 0) {
245
+ log(`[attach] Watching domains: ${domainPatterns.join(', ')}`);
246
+ } else {
247
+ log('[attach] Watching all domains');
248
+ }
249
+
250
+ // Phase 1: Connect browser-level CDP session
251
+ const browser = new CDPSession(browserInfo.wsUrl);
252
+ await browser.connect();
253
+
254
+ // Capture state
255
+ const generators = new Map<string, SkillGenerator>();
256
+ const requests = new Map<string, {
257
+ url: string; method: string; headers: Record<string, string>; postData?: string;
258
+ }>();
259
+ const responses = new Map<string, {
260
+ status: number; headers: Record<string, string>; mimeType: string;
261
+ }>();
262
+ let totalRequests = 0;
263
+ let filteredRequests = 0;
264
+ const startTime = Date.now();
265
+ const activeSessions = new Set<string>();
266
+ const loggedSkippedDomains = new Set<string>();
267
+
268
+ function enableNetworkForSession(sessionId: string): void {
269
+ if (activeSessions.has(sessionId)) return;
270
+ activeSessions.add(sessionId);
271
+
272
+ // Prefix requestIds with sessionId to avoid collisions across tabs
273
+ const prefix = sessionId.slice(0, 8);
274
+
275
+ browser.on(`${sessionId}:Network.requestWillBeSent`, (params) => {
276
+ // Evict oldest entries if Maps grow too large (memory safety)
277
+ if (requests.size > 10000) {
278
+ const keys = [...requests.keys()].slice(0, 1000);
279
+ for (const k of keys) { requests.delete(k); responses.delete(k); }
280
+ }
281
+
282
+ const key = `${prefix}:${params.requestId}`;
283
+ const request = params.request as Record<string, unknown>;
284
+ requests.set(key, {
285
+ url: request.url as string,
286
+ method: request.method as string,
287
+ headers: request.headers as Record<string, string>,
288
+ postData: request.postData as string | undefined,
289
+ });
290
+ });
291
+
292
+ browser.on(`${sessionId}:Network.responseReceived`, (params) => {
293
+ const key = `${prefix}:${params.requestId}`;
294
+ const response = params.response as Record<string, unknown>;
295
+ responses.set(key, {
296
+ status: response.status as number,
297
+ headers: response.headers as Record<string, string>,
298
+ mimeType: response.mimeType as string,
299
+ });
300
+ });
301
+
302
+ browser.on(`${sessionId}:Network.loadingFinished`, (params) => {
303
+ const key = `${prefix}:${params.requestId}`;
304
+ const req = requests.get(key);
305
+ const resp = responses.get(key);
306
+ if (!req || !resp) return;
307
+
308
+ totalRequests++;
309
+
310
+ // Get response body immediately (before Chrome evicts it from buffer).
311
+ // This MUST be called synchronously in the handler — deferring risks
312
+ // "No resource with given identifier found" on high-traffic tabs.
313
+ browser.send(
314
+ 'Network.getResponseBody',
315
+ { requestId: params.requestId },
316
+ sessionId,
317
+ ).then((result) => {
318
+ processExchange(key, req, resp, (result.body as string) ?? '', log);
319
+ }).catch(() => {
320
+ // Body evicted or unavailable — still process exchange without body
321
+ processExchange(key, req, resp, '', log);
322
+ });
323
+ });
324
+
325
+ // Enable network capture for this session (fire-and-forget)
326
+ browser.send('Network.enable', {}, sessionId).catch(() => {
327
+ // Session may have been destroyed
328
+ });
329
+ }
330
+
331
+ function processExchange(
332
+ key: string,
333
+ req: { url: string; method: string; headers: Record<string, string>; postData?: string },
334
+ resp: { status: number; headers: Record<string, string>; mimeType: string },
335
+ body: string,
336
+ logFn: (msg: string) => void,
337
+ ): void {
338
+ // Apply shouldCapture filter
339
+ if (!shouldCapture({ url: req.url, status: resp.status, contentType: resp.mimeType })) {
340
+ filteredRequests++;
341
+ if (req.url.startsWith('chrome-extension://')) {
342
+ logFn(` [skip] ${req.url.slice(0, 50)}... (extension)`);
343
+ }
344
+ return;
345
+ }
346
+
347
+ // Apply domain glob filter
348
+ let hostname: string;
349
+ try {
350
+ hostname = new URL(req.url).hostname;
351
+ } catch { return; }
352
+
353
+ if (!matchesDomainGlob(hostname, domainPatterns)) {
354
+ filteredRequests++;
355
+ if (!loggedSkippedDomains.has(hostname)) {
356
+ loggedSkippedDomains.add(hostname);
357
+ logFn(` [skip] ${hostname} (not in domain filter)`);
358
+ }
359
+ return;
360
+ }
361
+
362
+ // Get or create generator for this domain
363
+ if (!generators.has(hostname)) {
364
+ generators.set(hostname, new SkillGenerator());
365
+ }
366
+ const gen = generators.get(hostname)!;
367
+
368
+ const exchange: CapturedExchange = {
369
+ request: {
370
+ url: req.url,
371
+ method: req.method,
372
+ headers: req.headers,
373
+ postData: req.postData,
374
+ },
375
+ response: {
376
+ status: resp.status,
377
+ headers: resp.headers,
378
+ body,
379
+ contentType: resp.mimeType,
380
+ },
381
+ timestamp: new Date().toISOString(),
382
+ };
383
+
384
+ const endpoint = gen.addExchange(exchange);
385
+ if (endpoint) {
386
+ logFn(` [api] ${req.method} ${resp.status} ${hostname} ${endpoint.path}`);
387
+ }
388
+
389
+ // Clean up to avoid memory growth
390
+ requests.delete(key);
391
+ responses.delete(key);
392
+ }
393
+
394
+ // Phase 2: Attach to all existing page targets
395
+ const { targetInfos } = await browser.send('Target.getTargets') as unknown as {
396
+ targetInfos: Array<{ type: string; targetId: string }>;
397
+ };
398
+ for (const target of targetInfos) {
399
+ if (target.type === 'page') {
400
+ try {
401
+ const result = await browser.send('Target.attachToTarget', {
402
+ targetId: target.targetId,
403
+ flatten: true,
404
+ });
405
+ enableNetworkForSession(result.sessionId as string);
406
+ } catch {
407
+ // Target may have navigated away
408
+ }
409
+ }
410
+ }
411
+
412
+ // Phase 3: Auto-attach to future targets (new tabs, popups, OAuth redirects).
413
+ // flatten: true is critical — uses session-based CDP multiplexing instead
414
+ // of legacy nested WebSocket connections.
415
+ browser.on('Target.attachedToTarget', (params) => {
416
+ const targetInfo = params.targetInfo as { type: string } | undefined;
417
+ if (targetInfo?.type === 'page') {
418
+ enableNetworkForSession(params.sessionId as string);
419
+ }
420
+ });
421
+
422
+ await browser.send('Target.setAutoAttach', {
423
+ autoAttach: true,
424
+ waitForDebuggerOnStart: false,
425
+ flatten: true,
426
+ });
427
+
428
+ // Phase 4: Wait for SIGINT or browser disconnect
429
+ const result = await new Promise<AttachResult>((resolve) => {
430
+ const shutdown = async () => {
431
+ if (stopping) {
432
+ // Second SIGINT — force exit immediately
433
+ process.exit(1);
434
+ }
435
+ stopping = true;
436
+ log('');
437
+
438
+ const duration = Math.round((Date.now() - startTime) / 1000);
439
+
440
+ if (generators.size === 0) {
441
+ log('[attach] Nothing captured');
442
+ browser.close();
443
+ resolve({ domains: [], totalRequests, filteredRequests, duration });
444
+ return;
445
+ }
446
+
447
+ log('[attach] Generating skill files...');
448
+
449
+ const machineId = await getMachineId();
450
+ const signingKey = deriveSigningKey(machineId);
451
+ const apitapDir = process.env.APITAP_DIR || join(homedir(), '.apitap');
452
+ const authManager = new AuthManager(apitapDir, machineId);
453
+ const domains: AttachResult['domains'] = [];
454
+
455
+ for (const [domain, gen] of generators) {
456
+ let skill = gen.toSkillFile(domain);
457
+ if (skill.endpoints.length === 0) continue;
458
+
459
+ // Store extracted auth credentials
460
+ const auth = deduplicateAuth(gen.getExtractedAuth());
461
+ if (auth) {
462
+ await authManager.store(domain, auth);
463
+ }
464
+
465
+ // Store OAuth credentials if detected
466
+ const oauthConfig = gen.getOAuthConfig();
467
+ if (oauthConfig) {
468
+ const clientSecret = gen.getOAuthClientSecret();
469
+ const refreshToken = gen.getOAuthRefreshToken();
470
+ if (clientSecret || refreshToken) {
471
+ await authManager.storeOAuthCredentials(domain, {
472
+ ...(clientSecret ? { clientSecret } : {}),
473
+ ...(refreshToken ? { refreshToken } : {}),
474
+ });
475
+ }
476
+ }
477
+
478
+ skill = signSkillFile(skill, signingKey);
479
+ const skillPath = await writeSkillFile(skill);
480
+
481
+ const displayPath = skillPath.replace(homedir(), '~');
482
+ const count = skill.endpoints.length;
483
+ log(` ${domain} — ${count} endpoint${count === 1 ? '' : 's'} → ${displayPath}`);
484
+
485
+ domains.push({ domain, endpoints: count, skillFile: displayPath });
486
+ }
487
+
488
+ browser.close();
489
+ resolve({ domains, totalRequests, filteredRequests, duration });
490
+ };
491
+
492
+ process.on('SIGINT', shutdown);
493
+
494
+ // Handle browser disconnect (user closed Chrome)
495
+ browser.on('close', () => {
496
+ if (!stopping) shutdown();
497
+ });
498
+ });
499
+
500
+ return result;
501
+ }
@@ -36,6 +36,11 @@ export function isPathNoise(pathname: string): boolean {
36
36
  }
37
37
 
38
38
  export function shouldCapture(response: FilterableResponse): boolean {
39
+ // Block extension-internal traffic (prevents self-capture when
40
+ // attaching to a browser with ApiTap extension loaded)
41
+ if (response.url.startsWith('chrome-extension://')) return false;
42
+ if (response.url.startsWith('moz-extension://')) return false;
43
+
39
44
  // Only keep 2xx success responses
40
45
  if (response.status < 200 || response.status >= 300) return false;
41
46