Make Any Website into CLI & Use your logged-in browser by AI agent.
810 matches across 14 categories. Click a row to expand file-level details.
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | autoresearch/eval-skill.ts | 24 | // ── Types ────────────────────────────────────────────────────────── |
| MEDIUM | autoresearch/eval-skill.ts | 42 | // ── Task Definitions (inline, to avoid YAML dependency) ──────────── |
| MEDIUM | autoresearch/eval-skill.ts | 95 | // ── Run Task ─────────────────────────────────────────────────────── |
| MEDIUM | autoresearch/eval-skill.ts | 191 | // ── Main ─────────────────────────────────────────────────────────── |
| MEDIUM | extension/src/background.ts | 66 | // ─── Console log forwarding ────────────────────────────────────────── |
| MEDIUM | extension/src/background.ts | 94 | // ─── WebSocket connection ──────────────────────────────────────────── |
| MEDIUM | extension/src/background.ts | 198 | // ─── Browser target leases ─────────────────────────────────────────── |
| MEDIUM | extension/src/background.ts | 880 | // ─── Lifecycle events ──────────────────────────────────────────────── |
| MEDIUM | extension/src/background.ts | 922 | // ─── Popup status API ─────────────────────────────────────────────── |
| MEDIUM | extension/src/background.ts | 964 | // ─── Command dispatcher ───────────────────────────────────────────── |
| MEDIUM | extension/src/background.ts | 1026 | // ─── Action handlers ───────────────────────────────────────────────── |
| MEDIUM | …erpowers/plans/2026-03-31-daemon-lifecycle-redesign.md | 560 | // ── Built-in: daemon ────────────────────────────────────────────────────── |
| MEDIUM | scripts/postinstall.js | 23 | // ── Completion script content ────────────────────────────────────────────── |
| MEDIUM | scripts/postinstall.js | 58 | // ── Helpers ──────────────────────────────────────────────────────────────── |
| MEDIUM | scripts/postinstall.js | 74 | // ── Main ─────────────────────────────────────────────────────────────────── |
| MEDIUM | scripts/postinstall.js | 146 | // ── Spotify credentials template ──────────────────────────────────── |
| MEDIUM | scripts/postinstall.js | 162 | // ── Browser Bridge setup hint ─────────────────────────────────────── |
| MEDIUM | clis/twitter/trending.js | 3 | // ── CLI definition ──────────────────────────────────────────────────── |
| MEDIUM | clis/twitter/timeline.js | 5 | // ── Twitter GraphQL constants ────────────────────────────────────────── |
| MEDIUM | clis/twitter/timeline.js | 140 | // ── CLI definition ──────────────────────────────────────────────────── |
| MEDIUM | clis/twitter/thread.js | 5 | // ── Twitter GraphQL constants ────────────────────────────────────────── |
| MEDIUM | clis/twitter/thread.js | 102 | // ── CLI definition ──────────────────────────────────────────────────── |
| MEDIUM | clis/twitter/utils.js | 234 | // ── Engagement scoring (P3) ──────────────────────────────────────────── |
| MEDIUM | clis/twitter/search.js | 6 | // ── Public-search operator surface ───────────────────────────────────── |
| MEDIUM | clis/weread-official/utils.js | 148 | // ── Formatting helpers ────────────────────────────────────────────────────── |
| MEDIUM | clis/weread-official/utils.js | 208 | // ── Deep links ────────────────────────────────────────────────────────────── |
| MEDIUM | clis/weread-official/utils.js | 243 | // ── Argument validation ───────────────────────────────────────────────────── |
| MEDIUM | clis/weread-official/utils.js | 288 | // ── Empty-result helper ──────────────────────────────────────────────────── |
| MEDIUM | clis/weread-official/book.js | 57 | // ── info section ──────────────────────────────────────────────────── |
| MEDIUM | clis/weread-official/book.js | 85 | // ── chapters section ──────────────────────────────────────────────── |
| MEDIUM | clis/weread-official/book.js | 108 | // ── progress section ──────────────────────────────────────────────── |
| MEDIUM | clis/spotify/spotify.js | 9 | // ── Credentials ─────────────────────────────────────────────────────────────── |
| MEDIUM | clis/spotify/spotify.js | 31 | // ── Token storage ───────────────────────────────────────────────────────────── |
| MEDIUM | clis/spotify/spotify.js | 78 | // ── Spotify API helper ──────────────────────────────────────────────────────── |
| MEDIUM | clis/spotify/spotify.js | 105 | // ── Commands ────────────────────────────────────────────────────────────────── |
| MEDIUM | clis/boss/utils.js | 3 | // ── Constants ─────────────────────────────────────────────────────────────── |
| MEDIUM | clis/boss/utils.js | 10 | // ── Core helpers ──────────────────────────────────────────────────────────── |
| MEDIUM | clis/boss/utils.js | 140 | // ── Convenience helpers ───────────────────────────────────────────────────── |
| MEDIUM | clis/boss/utils.js | 197 | // ── UI automation helpers ─────────────────────────────────────────────────── |
| MEDIUM | clis/boss/utils.js | 287 | // ── Geek-side helpers ──────────────────────────────────────────────────────── |
| MEDIUM | clis/youtube/transcript-group.js | 70 | // ── Sentence grouping ───────────────────────────────────────────────────── |
| MEDIUM | clis/youtube/transcript-group.js | 104 | // ── Speaker grouping ────────────────────────────────────────────────────── |
| MEDIUM | clis/coupang/product.js | 50 | // ── Source 1: JSON-LD Product schema ───────────────────────────── |
| MEDIUM | clis/coupang/product.js | 126 | // ── Source 3: DOM fallback ─────────────────────────────────────── |
| MEDIUM | clis/mubu/notes.js | 5 | // ── 日期工具 ────────────────────────────────────────────── |
| MEDIUM | clis/mubu/notes.js | 105 | // ── API 工具 ────────────────────────────────────────────── |
| MEDIUM | clis/mubu/notes.js | 156 | // ── 命令 ────────────────────────────────────────────────── |
| MEDIUM | clis/xiaoe/xiaoe.test.js | 46 | // ─── Registration contract ────────────────────────────────────────── |
| MEDIUM | clis/xiaoe/xiaoe.test.js | 86 | // ─── content.js helpers ──────────────────────────────────────────── |
| MEDIUM | clis/xiaoe/xiaoe.test.js | 178 | // ─── catalog.js helpers ──────────────────────────────────────────── |
| MEDIUM | clis/xiaoe/xiaoe.test.js | 254 | // ─── courses.js helper ───────────────────────────────────────────── |
| MEDIUM | clis/xiaoe/xiaoe.test.js | 295 | // ─── buildScript invariants (anti-pattern regression guards) ────── |
| MEDIUM | clis/xiaoe/xiaoe.test.js | 331 | // ─── Wire tests for the func form ───────────────────────────────── |
| MEDIUM | clis/xiaohongshu/publish.js | 86 | // ── Primary: CDP DOM.setFileInputFiles ────────────────────────────── |
| MEDIUM | clis/xiaohongshu/publish.js | 114 | // ── Fallback: legacy base64 DataTransfer injection ───────────────── |
| MEDIUM | clis/xiaohongshu/publish.js | 500 | // ── Validate inputs ──────────────────────────────────────────────────────── |
| MEDIUM | clis/xiaohongshu/publish.js | 513 | // ── Step 1: Navigate to publish page ────────────────────────────────────── |
| MEDIUM | clis/xiaohongshu/publish.js | 522 | // ── Step 2: Select 图文 (image+text) note type if tabs are present ───────── |
| MEDIUM | clis/xiaohongshu/publish.js | 533 | // ── Step 3: Upload images ────────────────────────────────────────────────── |
| MEDIUM | clis/xiaohongshu/publish.js | 543 | // ── Step 3b: Wait for editor form to render ─────────────────────────────── |
| 133 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | extension/src/cdp.ts | 420 | function registerFrameTargetCleanup(): void { |
| LOW | extension/src/cdp.ts | 630 | function getOrCreateNetworkCaptureEntry(tabId: number, requestId: string, fallback?: { |
| LOW | extension/src/cdp.ts | 630 | function getOrCreateNetworkCaptureEntry(tabId: number, requestId: string, fallback?: { |
| LOW | extension/src/background.ts | 538 | function getOwnedContainerGroupTitles(role: OwnedWindowRole): string[] { |
| LOW | extension/src/background.ts | 551 | async function focusOwnedWindowIfRequested(windowId: number, mode: WindowMode): Promise<void> { |
| LOW | extension/src/background.ts | 557 | async function toOwnedContainerDiscoveryCandidate(group: chrome.tabGroups.TabGroup): Promise<OwnedContainerDiscoveryCand |
| LOW | extension/src/background.ts | 573 | function selectOwnedContainerDiscoveryCandidate(candidates: OwnedContainerDiscoveryCandidate[]): OwnedContainerDiscovery |
| LOW | extension/src/background.ts | 582 | async function discoverOwnedContainerFromTabGroup(role: OwnedWindowRole): Promise<{ windowId: number; groupId: number } |
| LOW | extension/src/background.ts | 610 | async function ensureOwnedContainerTabGroup(role: OwnedWindowRole, windowId: number, tabIds: Array<number | undefined>): |
| LOW | extension/src/background.ts | 626 | async function ensureOwnedContainerTabGroupUnlocked(role: OwnedWindowRole, windowId: number, ids: number[]): Promise<voi |
| LOW | extension/src/background.ts | 662 | async function ensureOwnedContainerWindow( |
| LOW | extension/src/background.ts | 676 | async function ensureOwnedContainerWindowUnlocked( |
| LOW | extension/src/background.ts | 751 | async function findReusableOwnedContainerTab(windowId: number): Promise<number | undefined> { |
| LOW | extension/src/background.ts | 777 | async function createOwnedTabLeaseUnlocked(leaseKey: string, initialUrl?: string): Promise<ResolvedTab> { |
| LOW | extension/src/background.ts | 1043 | function normalizeUrlForComparison(url?: string): string { |
| LOW | extension/src/background.ts | 1070 | function enumerateCrossOriginFrames(tree: any): Array<{ index: number; frameId: string; url: string; name: string }> { |
| LOW | extension/src/background.ts | 1605 | function stripOpenCliFrameRoutingParams(params: Record<string, unknown>, stripFrameId: boolean): Record<string, unknown> |
| LOW | extension/src/background.ts | 1645 | async function handleNetworkCaptureStart(cmd: Command, leaseKey: string): Promise<Result> { |
| LOW | extension/src/background.ts | 1730 | async function reconcileTargetLeaseRegistry(): Promise<void> { |
| LOW | tests/e2e/browser-auth-helpers.ts | 8 | export async function expectGracefulAuthFailure(args: string[]) { |
| LOW | tests/e2e/browser-public.test.ts | 36 | function isBrowserBridgeUnavailable(result: CliResult): boolean { |
| LOW | tests/e2e/browser-public.test.ts | 94 | function expectNonEmptyDataOrSkipEnv(data: any[] | null, label: string): data is any[] { |
| LOW | tests/e2e/browser-public.test.ts | 120 | function countTiebaReplyFloorOverlap(left: any[] | null, right: any[] | null): number { |
| LOW | tests/e2e/browser-public.test.ts | 145 | async function getTiebaReadCandidateOrSkip( |
| LOW | tests/e2e/browser-public.test.ts | 236 | async function expectImdbDataOrChallengeSkip(args: string[], label: string): Promise<any[] | null> { |
| LOW | tests/e2e/public-commands.test.ts | 12 | function isExpectedChineseSiteRestriction(code: number, stderr: string): boolean { |
| LOW | tests/e2e/public-commands.test.ts | 26 | function isExpectedApplePodcastsRestriction(code: number, stderr: string): boolean { |
| LOW | tests/e2e/public-commands.test.ts | 32 | function isExpectedGoogleRestriction(code: number, stderr: string): boolean { |
| LOW | clis/ctrip/hotel-search.js | 70 | function assertCheckinBeforeCheckout(checkin, checkout) { |
| LOW | clis/twitter/download.js | 149 | function normalizeUserMediaOperation(operation) { |
| LOW | clis/twitter/download.js | 160 | function normalizeUserByScreenNameOperation(operation) { |
| LOW | clis/twitter/tweets.js | 99 | function normalizeUserTweetsOperation(operation) { |
| LOW | clis/twitter/tweets.js | 110 | function normalizeUserByScreenNameOperation(operation) { |
| LOW | clis/twitter/post.js | 37 | function isUnsupportedInsertTextError(err) { |
| LOW | clis/twitter/post.js | 146 | async function attachImagesViaDataTransfer(page, absPaths) { |
| LOW | clis/twitter/lists.js | 78 | export function getListsManagementInstructions(data) { |
| LOW | clis/twitter/bookmark-folder.js | 86 | export function parseBookmarkFolderTimeline(data, seen) { |
| LOW | clis/twitter/utils.js | 202 | export function isRecoverableFileInputError(error) { |
| LOW | clis/twitter/utils.js | 207 | export async function waitForComposerMediaReady(page, expectedCount = 1) { |
| LOW | clis/twitter/shared.js | 75 | export function buildTwitterArticleScopeSource(tweetId) { |
| LOW | clis/twitter/shared.js | 105 | export function normalizeTwitterScreenName(value) { |
| LOW | clis/twitter/shared.js | 137 | function normalizeOperationFallback(fallback) { |
| LOW | clis/twitter/shared.js | 162 | export function looksLikePrivateTwitterTimeline(data) { |
| LOW | clis/twitter/shared.js | 168 | export function normalizeTwitterGraphqlPayload(value) { |
| LOW | clis/twitter/shared.js | 184 | export function sanitizeTwitterOperationMetadata(resolved, fallback) { |
| LOW | clis/twitter/shared.js | 208 | export async function resolveTwitterOperationMetadata(page, operationName, fallback) { |
| LOW | clis/twitter/search.js | 184 | function buildSearchTimelineRequest(operation, rawQuery, product, count, cursor) { |
| LOW | clis/gitee/trending.js | 201 | function collectProjectsFromUnknown(value, out, seen, depth) { |
| LOW | clis/gitee/trending.js | 233 | function collectProjectsFromCapture(entries) { |
| LOW | clis/amazon/rankings.js | 12 | function normalizeVisibleCategoryLinks(links) { |
| LOW | clis/amazon/rankings.js | 30 | export function normalizeRankingCandidate(candidate, context) { |
| LOW | clis/amazon/offer.js | 32 | function isDeliveryLocationBlocked(text) { |
| LOW | clis/amazon/discussion.js | 4 | function normalizeDiscussionPayload(payload) { |
| LOW | clis/amazon/discussion.js | 40 | async function readCurrentDiscussionPayload(page, limit) { |
| LOW | clis/amazon/shared.js | 273 | export function extractReviewCountFromCardText(text) { |
| LOW | clis/gemini/deep-research-result.js | 13 | async function resolveDeepResearchExportResponse(page, timeoutSeconds) { |
| LOW | clis/gemini/deep-research.js | 13 | function parseDeepResearchProgress(text) { |
| LOW | clis/gemini/utils.js | 38 | function buildGeminiComposerLocatorScript() { |
| LOW | clis/gemini/utils.js | 81 | export function parseGeminiTitleMatchMode(value, fallback = 'contains') { |
| LOW | clis/gemini/utils.js | 87 | export function parseGeminiConversationUrl(value) { |
| 389 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | autoresearch/save-adapters/zhihu-search-detail.ts | 18 | // Step 1: Navigate |
| LOW | autoresearch/save-adapters/zhihu-search-detail.ts | 21 | // Step 2: Search API — filter results by type, extract question IDs |
| LOW | autoresearch/save-adapters/zhihu-search-detail.ts | 33 | // Step 3: For each result, fetch question stats (answer_count, follower_count) |
| LOW | autoresearch/save-adapters/zhihu-search-detail.ts | 47 | // Step 4: Format output |
| LOW | autoresearch/save-adapters/xhs-note-comments.ts | 18 | // Step 1: Navigate to note detail page |
| LOW | autoresearch/save-adapters/xhs-note-comments.ts | 21 | // Step 2: Extract note metadata (title, author, likes) |
| LOW | autoresearch/save-adapters/xhs-note-comments.ts | 29 | // Step 3: Scroll the note container to trigger comment loading |
| LOW | autoresearch/save-adapters/xhs-note-comments.ts | 37 | // Step 4: Extract comments from DOM |
| LOW | autoresearch/save-adapters/xhs-note-comments.ts | 54 | // Step 5: Merge note meta + comments into unified output |
| LOW | autoresearch/save-adapters/zhihu-question-full.ts | 18 | // Step 1: Navigate to question page |
| LOW | autoresearch/save-adapters/zhihu-question-full.ts | 21 | // Step 2: Fetch question detail |
| LOW | autoresearch/save-adapters/zhihu-question-full.ts | 29 | // Step 3: Fetch top answers |
| LOW | autoresearch/save-adapters/zhihu-question-full.ts | 38 | // Step 4: Fetch related questions |
| LOW | autoresearch/save-adapters/zhihu-question-full.ts | 46 | // Step 5: Merge three layers into unified output |
| LOW | autoresearch/save-adapters/xhs-search-full.ts | 18 | // Step 1: Navigate to search page |
| LOW | autoresearch/save-adapters/xhs-search-full.ts | 20 | // Step 2: Wait for async render via MutationObserver |
| LOW | autoresearch/save-adapters/xhs-search-full.ts | 28 | // Step 3: Scroll 3x to load more content |
| LOW | autoresearch/save-adapters/xhs-search-full.ts | 33 | // Step 4: Extract from DOM with deduplication |
| LOW | autoresearch/save-adapters/xhs-explore-deep.ts | 16 | // Step 1: Navigate to explore page |
| LOW | autoresearch/save-adapters/xhs-explore-deep.ts | 18 | // Step 2: Wait for initial content via MutationObserver |
| LOW | autoresearch/save-adapters/xhs-explore-deep.ts | 26 | // Step 3: Multi-round adaptive scroll (early stop when no new content) |
| LOW | autoresearch/save-adapters/xhs-explore-deep.ts | 35 | // Step 4: Extract with noteId deduplication + parse likes as integers |
| LOW | autoresearch/save-adapters/xhs-explore-deep.ts | 57 | // Step 5: Sort by likes descending |
| LOW | autoresearch/save-adapters/xhs-explore-deep.ts | 59 | // Step 6: Slice and format |
| LOW | autoresearch/save-adapters/zhihu-hot-detail.ts | 16 | // Step 1: Navigate |
| LOW | autoresearch/save-adapters/zhihu-hot-detail.ts | 19 | // Step 2: Fetch hot list (handle 16+ digit IDs) |
| LOW | autoresearch/save-adapters/zhihu-hot-detail.ts | 29 | // Step 3: For each hot question, fetch its top answer |
| LOW | autoresearch/save-adapters/zhihu-hot-detail.ts | 46 | // Step 4: Format output |
| LOW | clis/pixiv/illusts.js | 29 | // Step 1: get all illust IDs |
| LOW | clis/pixiv/illusts.js | 38 | // Step 2: batch fetch details (Pixiv supports up to ~48 IDs per request) |
| LOW | clis/pixiv/illusts.test.js | 33 | // Step 1: profile/all returns illust IDs |
| LOW | clis/pixiv/illusts.test.js | 39 | // Step 2: batch detail response |
| LOW | clis/twitter/reply-dm.js | 26 | // Step 1: Navigate to messages to get conversation list |
| LOW | clis/twitter/reply-dm.js | 29 | // Step 2: Collect conversations with scroll-to-load |
| LOW | clis/twitter/reply-dm.js | 101 | // Step 3: Iterate through conversations and send message |
| LOW | clis/twitter/unretweet.js | 55 | // Step 1: click Unretweet button → opens menu |
| LOW | clis/twitter/unretweet.js | 58 | // Step 2: wait for and click the confirm menu item. The confirm |
| LOW | clis/twitter/retweet.js | 55 | // Step 1: click Retweet button → opens menu |
| LOW | clis/twitter/retweet.js | 58 | // Step 2: wait for and click the confirm menu item. The confirm |
| LOW | clis/twitter/accept.js | 29 | // Step 1: Navigate to DM requests page |
| LOW | clis/twitter/accept.js | 32 | // Step 2: Get conversations with scroll-to-load |
| LOW | clis/twitter/accept.js | 90 | // Step 3: Find first unvisited conversation with keyword match in preview |
| LOW | clis/twitter/accept.js | 102 | // Step 4: Click this conversation to open it |
| LOW | clis/twitter/accept.js | 119 | // Step 5: Read full chat content and find Accept button |
| LOW | clis/jimeng/generate.js | 28 | // Step 1: Count existing images before generation |
| LOW | clis/jimeng/generate.js | 31 | // Step 2: Clear and set prompt |
| LOW | clis/jimeng/generate.js | 45 | // Step 3: Click generate |
| LOW | clis/jimeng/generate.js | 50 | // Step 4: Wait for new images to appear |
| LOW | clis/jimeng/generate.js | 66 | // Step 5: Extract image URLs (use thumbnail URLs which are accessible) |
| LOW | clis/chatgpt-app/ax.js | 243 | // Step 1: Click the "Options" button to open the popover (support English, Simplified and Traditional Chinese UI) |
| LOW | clis/chatgpt-app/ax.js | 254 | // Step 2: Find the popover that appeared, search ONLY within it |
| LOW | clis/chatgpt-app/ax.js | 260 | // Step 3: If legacy, click "Legacy models" to expand submenu |
| LOW | clis/chatgpt-app/ax.js | 270 | // Step 4: Click the target model button within the popover (prefix match) |
| LOW | clis/youtube/transcript.js | 462 | // Step 2: Fetch caption XML and parse segments |
| LOW | clis/youtube/transcript.js | 564 | // Step 3: Fetch chapters (for grouped mode) |
| LOW | clis/youtube/transcript.js | 641 | // Step 4: Format output based on mode |
| LOW | clis/youtube/comments.js | 33 | // Step 1: Get comment continuation token |
| LOW | clis/youtube/comments.js | 59 | // Step 2: Fetch comments |
| LOW | clis/weibo/delete.js | 74 | // Step 1: resolve mblogid / idstr to canonical idstr via /show. |
| LOW | clis/weibo/delete.js | 95 | // Step 2: destroy. Weibo requires X-Xsrf-Token (double-submit CSRF token). |
| 29 more matches not shown… | |||
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | autoresearch/eval-skill.ts | 74 | { name: "form-fill-basic", task: "Fill the Customer Name with 'OpenCLI' and Telephone with '555-0100'. Do not submit." |
| LOW | autoresearch/browse-tasks.json | 445 | "opencli browser eval \"var n=document.querySelector('[name=custname]');n.value='Alice';n.dispatchEvent(new Event( |
| LOW | docs/adapters/browser/linkedin.md | 74 | opencli linkedin connect https://www.linkedin.com/in/example/ --expected-name "Jane Doe" --note "quick note" --send |
| LOW | docs/adapters/browser/linkedin.md | 78 | opencli linkedin safe-send --thread-url https://www.linkedin.com/messaging/thread/abc/ --expected-name "Jane Doe" --mess |
| LOW | clis/reuters/reuters.test.js | 63 | authors: [{ name: 'Jane Doe' }, { name: 'Bob Smith' }], |
| LOW | clis/producthunt/utils.test.js | 29 | expect(posts[0].author).toBe('Jane Doe'); |
| LOW | clis/linkedin-learning/search.test.js | 29 | expect(parseAuthors([{ firstName: 'Jane', lastName: 'Doe' }])).toBe('Jane Doe'); |
| LOW | clis/linkedin/connect.test.js | 77 | expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true |
| LOW | clis/linkedin/connect.test.js | 79 | expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', pending: true, connectA |
| LOW | clis/linkedin/connect.test.js | 81 | expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/' }, 'Jane Doe', 'https:// |
| LOW | clis/linkedin/connect.test.js | 86 | expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', alreadyConnected: true |
| LOW | clis/linkedin/connect.test.js | 88 | expect(assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', pending: true }, 'Jane |
| LOW | clis/linkedin/connect.test.js | 90 | expect(assessProfileSafety({ name: 'Wrong Person', url: 'https://www.linkedin.com/in/wrong/', connectAvailable: |
| LOW | clis/linkedin/connect.test.js | 95 | const result = assessProfileSafety({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/?mini=true', conne |
| LOW | clis/linkedin/connect.test.js | 96 | expect(result).toMatchObject({ ok: true, blockReason: 'verified', actualValue: 'Jane Doe', connectable: true }); |
| LOW | clis/linkedin/connect.test.js | 105 | const page = makeFakePage({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, |
| LOW | clis/linkedin/connect.test.js | 108 | 'expected-name': 'Jane Doe', |
| LOW | clis/linkedin/connect.test.js | 111 | expect(rows[0]).toMatchObject({ status: 'connectable_dry_run', recipient: 'Jane Doe', reason: 'verified', connec |
| LOW | clis/linkedin/connect.test.js | 117 | const page = makeFakePage({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', alreadyConnected: true, |
| LOW | clis/linkedin/connect.test.js | 120 | 'expected-name': 'Jane Doe', |
| LOW | clis/linkedin/connect.test.js | 123 | expect(rows[0]).toMatchObject({ status: 'not_connectable', recipient: 'Jane Doe', reason: 'already_connected', c |
| LOW | clis/linkedin/connect.test.js | 131 | 'expected-name': 'Jane Doe', |
| LOW | clis/linkedin/connect.test.js | 144 | 'expected-name': 'Jane Doe', |
| LOW | clis/linkedin/connect.test.js | 152 | const page = makeFakePage({ name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, |
| LOW | clis/linkedin/connect.test.js | 156 | 'expected-name': 'Jane Doe', |
| LOW | clis/linkedin/connect.test.js | 164 | { name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, connectHref: '/preload |
| LOW | clis/linkedin/connect.test.js | 165 | { found: true, matchedName: 'Jane Doe', matchedUrl: 'https://www.linkedin.com/in/jane/' }, |
| LOW | clis/linkedin/connect.test.js | 169 | 'expected-name': 'Jane Doe', |
| LOW | clis/linkedin/connect.test.js | 173 | expect(rows[0]).toMatchObject({ status: 'sent_verified', recipient: 'Jane Doe', reason: 'sent_invitation_verifie |
| LOW | clis/linkedin/connect.test.js | 180 | { name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, connectHref: '/preload |
| LOW | clis/linkedin/connect.test.js | 187 | 'expected-name': 'Jane Doe', |
| LOW | clis/linkedin/connect.test.js | 191 | expect(rows[0]).toMatchObject({ status: 'sent_verified', recipient: 'Jane Doe', reason: 'sent_invitation_verifie |
| LOW | clis/linkedin/connect.test.js | 199 | { name: 'Jane Doe', url: 'https://www.linkedin.com/in/jane/', connectAvailable: true, connectHref: '/preload |
| LOW | clis/linkedin/connect.test.js | 206 | 'expected-name': 'Jane Doe', |
| LOW | clis/linkedin/connect.test.js | 210 | expect(rows[0]).toMatchObject({ status: 'send_unverified', recipient: 'Jane Doe', reason: 'sent_invitation_not_f |
| LOW | clis/linkedin/connect.test.js | 47 | expect(matchInvitationName('Jane Q. Doe', 'Jane Doe')).toBe(true); |
| LOW | clis/linkedin/connect.test.js | 48 | expect(matchInvitationName('Janet Doe', 'Jane Doe')).toBe(false); |
| LOW | clis/linkedin/salesnav-message.test.js | 142 | { status: 200, json: { data: { fullName: 'Jane Doe', defaultPosition: { title: 'QA', companyName: 'Acme' }, degree |
| LOW | clis/linkedin/salesnav-message.test.js | 153 | recipient: 'Jane Doe', |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | clis/chatgpt-app/ax.js | 61 | print(String(data: data, encoding: .utf8)!) |
| HIGH | clis/chatgpt-app/ax.js | 180 | print("Sent") |
| HIGH | clis/chatgpt-app/ax.js | 276 | print("Selected: \\(target)") |
| HIGH | clis/chatgpt-app/ax.js | 309 | print("false"); exit(0) |
| HIGH | clis/chatgpt-app/ax.js | 313 | print("false"); exit(0) |
| HIGH | clis/chatgpt-app/ax.js | 316 | print(targets.contains(where: { hasButton(win, desc: $0) }) ? "true" : "false") |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | designs/self-repair-protocol.md | 141 | |
| LOW | clis/dblp/author.js | 1 | // dblp author — resolve an author name to a PID and list their publications |
| LOW | clis/openalex/utils.js | 1 | // Shared helpers for the OpenAlex (`api.openalex.org`) adapter. |
| LOW | clis/hupu/hot.js | 1 | // Hupu hot/home threads — public SSR HTML scrape via in-page DOM walk. |
| LOW | clis/eastmoney/kuaixun.js | 1 | // eastmoney kuaixun — 7x24 real-time market news feed. |
| LOW | clis/facebook/notifications.test.js | 1 | // Facebook notifications — unit tests for pure helpers + JSDOM fixture |
| LOW | clis/facebook/notifications.js | 1 | // Facebook notifications — pulls the rendered notification feed from |
| LOW | clis/facebook/notifications.js | 21 | // - Upfront `--limit` validation: positive integer in [1, 100], no |
| LOW | clis/xiaoe/catalog.js | 1 | // Xiaoe (小鹅通) catalog — list chapters + sections of a course / column |
| LOW | clis/xiaoe/courses.js | 1 | // Xiaoe (小鹅通) purchased-courses list — pulls "已购内容" tab cards from |
| LOW | clis/xiaoe/content.js | 1 | // Xiaoe (小鹅通) content extractor — pulls rendered article text from a |
| LOW | clis/xiaoe/xiaoe.test.js | 1 | // Xiaoe adapter contract + helper tests. |
| LOW | clis/reddit/home.js | 61 | await page.goto('https://www.reddit.com'); |
| LOW | clis/reddit/read.js | 141 | const postId = normalizeRedditPostId(kwargs['post-id']); |
| LOW | clis/chatgpt/utils.js | 101 | } |
| LOW | clis/tiktok/follow.js | 1 | // Follow a TikTok user via in-page button click + state verification. |
| LOW | clis/tiktok/comment.js | 1 | // Post a comment on a TikTok video via in-page button click + state |
| LOW | clis/tiktok/unfollow.js | 1 | // Unfollow a TikTok user via in-page button click + state verification. |
| LOW | clis/tiktok/utils.js | 161 | } |
| LOW | src/cli.ts | 1121 | captured_at: new Date().toISOString(), |
| LOW | src/browser/stealth.ts | 181 | return fn; |
| LOW | src/browser/stealth.ts | 221 | |
| LOW | src/browser/stealth.ts | 261 | // When DevTools or CDP debugger is attached, Chrome may alter the |
| LOW | src/download/article-download.ts | 81 | // ============================================================ |
| Severity | File | Line | Snippet |
|---|---|---|---|
| CRITICAL | …lls/opencli-adapter-author/references/api-discovery.md | 242 | opencli browser eval "window.__pinia.state.value.someStore.someMethod({...})" |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | clis/hf/paper.js | 3 | // AI-generated keyword list HF curates. |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | src/browser/shape-filter.ts | 64 | // it as a raw segment list (keeps us robust to unexpected input). |
| MEDIUM | …r/__fixtures__/article-extract/wikipedia-markdown.html | 967 | <li id="cite_note-commonmark.org-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-commonmark.org_30-0">^</a> |
| MEDIUM | …r/__fixtures__/article-extract/wikipedia-markdown.html | 967 | <li id="cite_note-commonmark.org-30"><span class="mw-cite-backlink"><b><a href="#cite_ref-commonmark.org_30-0">^</a> |
| Severity | File | Line | Snippet |
|---|---|---|---|
| HIGH | docs/adapters/browser/pubmed.md | 48 | export NCBI_API_KEY=YOUR_API_KEY |
| Severity | File | Line | Snippet |
|---|---|---|---|
| MEDIUM | autoresearch/commands/run.ts | 46 | ## Scope (files you can modify) |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | scripts/check-doc-coverage.sh | 8 | # Usage: |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | scripts/check-doc-coverage.sh | 45 | # Check if doc exists in browser/ or desktop/ subdirectories |
| Severity | File | Line | Snippet |
|---|---|---|---|
| LOW | src/daemon.ts | 191 | async function handleRequest(req: IncomingMessage, res: ServerResponse): Promise<void> { |