Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"agentic-ai",
"agentic-browser",
"ai-browser",
"browser-agent",
"browser-use-agent",
"browser-infra"
],
"is_fork": false,
"size_kb": 75713,
"has_wiki": true,
"homepage": "https://browser4.io",
"languages": {
"CSS": 46421,
"Java": 35,
"Rust": 1772966,
"Shell": 101026,
"Kotlin": 4767542,
"Python": 120927,
"Dockerfile": 3160,
"JavaScript": 41650,
"PowerShell": 1836477,
"TypeScript": 683,
"Rich Text Format": 2235
},
"pushed_at": "2026-07-25T14:10:28Z",
"created_at": "2018-03-12T12:00:26Z",
"owner_type": "User",
"updated_at": "2026-07-24T23:02:31Z",
"description": "Browser4: a lightning-fast, coroutine-safe browser for your AI.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "main",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Kotlin",
"significant_languages": [
"Kotlin",
"PowerShell",
"Rust"
]
},
"owner": {
"blog": "platon.ai",
"name": "PlatonAI",
"type": "User",
"login": "platonai",
"company": null,
"location": "China",
"followers": 154,
"avatar_url": "https://avatars.githubusercontent.com/u/37785921?v=4",
"created_at": "2018-03-26T01:34:39Z",
"is_verified": null,
"public_repos": 42,
"account_age_days": 3043
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v4.12.0-rc.3",
"kind": "prerelease",
"published_at": "2026-07-19T16:27:32Z"
},
{
"tag": "v4.12.0-rc.1",
"kind": "prerelease",
"published_at": "2026-07-15T04:06:01Z"
},
{
"tag": "v4.11.22",
"kind": "patch",
"published_at": "2026-07-14T07:23:00Z"
},
{
"tag": "v4.11.21",
"kind": "patch",
"published_at": "2026-07-12T08:34:44Z"
},
{
"tag": "v4.11.20",
"kind": "patch",
"published_at": "2026-07-12T07:56:18Z"
},
{
"tag": "v4.11.19",
"kind": "patch",
"published_at": "2026-07-10T10:09:06Z"
},
{
"tag": "v4.11.18",
"kind": "patch",
"published_at": "2026-07-08T07:37:53Z"
},
{
"tag": "v4.11.17",
"kind": "patch",
"published_at": "2026-07-05T09:03:50Z"
},
{
"tag": "v4.11.15",
"kind": "patch",
"published_at": "2026-06-29T06:42:33Z"
},
{
"tag": "v4.11.14",
"kind": "patch",
"published_at": "2026-06-28T12:13:31Z"
},
{
"tag": "v4.11.13",
"kind": "patch",
"published_at": "2026-06-27T13:07:00Z"
},
{
"tag": "v4.11.12",
"kind": "patch",
"published_at": "2026-06-26T21:10:42Z"
},
{
"tag": "v4.11.11",
"kind": "patch",
"published_at": "2026-06-24T12:48:41Z"
},
{
"tag": "v4.11.10",
"kind": "patch",
"published_at": "2026-06-23T06:34:37Z"
},
{
"tag": "v4.11.9",
"kind": "patch",
"published_at": "2026-06-22T17:25:28Z"
},
{
"tag": "v4.11.8",
"kind": "patch",
"published_at": "2026-06-21T11:53:09Z"
},
{
"tag": "v4.11.7",
"kind": "patch",
"published_at": "2026-06-19T19:59:47Z"
},
{
"tag": "v4.11.6",
"kind": "patch",
"published_at": "2026-06-15T13:00:59Z"
},
{
"tag": "v4.11.5",
"kind": "patch",
"published_at": "2026-06-14T06:21:33Z"
},
{
"tag": "v4.11.4",
"kind": "patch",
"published_at": "2026-06-12T19:25:54Z"
},
{
"tag": "v4.11.3",
"kind": "patch",
"published_at": "2026-06-12T08:42:20Z"
},
{
"tag": "v4.11.2",
"kind": "patch",
"published_at": "2026-06-11T01:49:59Z"
},
{
"tag": "v4.11.1",
"kind": "patch",
"published_at": "2026-06-10T04:42:06Z"
},
{
"tag": "v4.11.0",
"kind": "minor",
"published_at": "2026-06-07T14:38:47Z"
},
{
"tag": "v4.10.0",
"kind": "minor",
"published_at": "2026-06-06T03:48:08Z"
},
{
"tag": "v4.9.2",
"kind": "patch",
"published_at": "2026-05-21T17:21:21Z"
},
{
"tag": "v4.9.1",
"kind": "patch",
"published_at": "2026-05-18T07:05:15Z"
},
{
"tag": "v4.8.2",
"kind": "patch",
"published_at": "2026-05-10T17:15:15Z"
},
{
"tag": "v4.8.1",
"kind": "patch",
"published_at": "2026-05-05T10:09:30Z"
},
{
"tag": "v4.8.0",
"kind": "minor",
"published_at": "2026-05-01T14:59:44Z"
},
{
"tag": "v4.7.0",
"kind": "minor",
"published_at": "2026-04-19T21:25:41Z"
},
{
"tag": "v4.6.0",
"kind": "minor",
"published_at": "2026-04-06T08:44:08Z"
},
{
"tag": "v4.5.0",
"kind": "minor",
"published_at": "2026-02-12T02:02:55Z"
},
{
"tag": "v4.4.0",
"kind": "minor",
"published_at": "2026-01-13T06:21:54Z"
},
{
"tag": "v4.3.0",
"kind": "minor",
"published_at": "2026-01-09T17:29:59Z"
},
{
"tag": "v4.2.0",
"kind": "minor",
"published_at": "2026-01-01T07:06:27Z"
},
{
"tag": "v4.1.0",
"kind": "minor",
"published_at": "2025-11-25T11:24:01Z"
},
{
"tag": "v4.0.1",
"kind": "patch",
"published_at": "2025-10-13T04:09:23Z"
},
{
"tag": "v4.0.0",
"kind": "major",
"published_at": "2025-09-12T07:58:56Z"
}
],
"recent_commits": [
{
"oid": "2c3ce18394293ed10a6727944414c1c7f959f49c",
"body": null,
"is_bot": false,
"headline": "Auto-bump versions",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-14T06:47:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "30593e37c7be6ad0581d03ed6cee171528c0ec03",
"body": "… 4.12.x\n\nFix 1 — mouseWheel: add withTimeout + JS scrollBy fallback\n- Keep CDP Input.dispatchMouseEvent (type wheel) as primary so page\n listeners receive trusted wheel DOM events.\n- Add withTimeout(wheelTimeout) and JS window.scrollBy() / element.scrollBy()\n fallbacks so large scrolls don't hang\n[…]\nref→selector, snake→camel,\n sessionId stripping, modifiers→modifier mappings.\n- MCPToolControllerTest.kt: 7 tests for buildBatchFocusExpression output.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(server,cli,test): backport press/fill/mouseWheel/batch fixes from…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-14T05:39:16Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7504fec79a89fd604dbd8db70efc68b0fc33ab36",
"body": null,
"is_bot": false,
"headline": "chore: ignore .workbuddy/ working directory",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-13T20:46:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "954a3e3115e0a54c0c3a7f88ae1cb1b2fb1b89bc",
"body": "…SKILL.md with methodology\n\n- Extract the duplicated Windows shell-quoting troubleshooting from SKILL.md into a new references/shell-quoting.md (tier: procedure); keep only the section 5 warning + link in SKILL.md. Resolves the One Fact, One Place violation from methodology.md.\n- Align SKILL.md frontmatter title with its H1 heading.\n- Refine element-ref wording to note the e{backendNodeId} format (verified against Models.kt).\n- SKILL.md: 304 -> 255 lines.",
"is_bot": false,
"headline": "docs(skills): consolidate browser4-cli shell-quoting guidance, align …",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-13T20:46:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04774a1d18d907df958c53a6c9006ff163bcf9b6",
"body": null,
"is_bot": false,
"headline": "Auto-bump versions",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T07:57:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9467eab13bb128c256e98e770279ec0a69c7e947",
"body": "… just strings\n\nbuild_command_args coerces numeric positionals to Value::Number (e.g.\nresize 1280 900 -> w:1280, h:900), but validate_required_args only checked\n.as_str(), so numeric args were falsely rejected as missing.\n\nFixed by matching on all value types: String (non-empty), Number/Bool\n(always present), Array (non-empty).\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(cli): validate_required_args should accept numeric/bool args, not…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T06:14:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "fb2503c169d802dc89809cd241cd07c5f8114c76",
"body": "Revert the package restructure from commit 96044efdb which moved\nclasses to a 4.12-style layout. This layout proved too aggressive\nand can introduce bugs.\n\nPackage changes:\n- ai.platon.browser4.api -> ai.platon.pulsar.browser\n- ai.platon.browser4.api.model -> pulsar.browser.common / pulsar.chrome.do\n[…]\nrome.detail\n- ai.platon.browser4.chrome.protocol -> ai.platon.browser4.chrome.handler\n\nAll 176 browser4-browser tests pass. Full project build succeeds.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "revert(browser4-browser): rollback package structure to 4.11.x layout",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T05:26:40Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "19f88a4605e62342205c471ed5ae9e765c703c47",
"body": null,
"is_bot": false,
"headline": "chore",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T02:54:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "731fe8ead2997db9eb4ece2aeef1d76437709bb7",
"body": "…wser-related classes",
"is_bot": false,
"headline": "fix(browser): update imports to use the correct model package for bro…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T01:56:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04264f43d24d5c706f52116efee860f8a307d89a",
"body": "…wser-related classes",
"is_bot": false,
"headline": "fix(browser): update imports to use the correct model package for bro…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T01:55:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6beccd178a10a126bdbb689d57e2ba34c41773f8",
"body": "…wser-related classes",
"is_bot": false,
"headline": "fix(browser): update imports to use the correct model package for bro…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T01:48:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0abe2bbebb8bada2c585f3d8c0b63ab265193e71",
"body": "…t line cap to 5000",
"is_bot": false,
"headline": "fix(doctor): change log file collection to return empty list and limi…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T01:38:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7bf6de2e8e9e40092eeb1e8e9b1e1bfdd0f60b43",
"body": "…eturn type in BrowserTabToolExecutor",
"is_bot": false,
"headline": "fix(browser): update import for NavigateEntry and ensure consistent r…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T01:31:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dcce30e0cf129a02da77c414e5d53d5d01b7a5ce",
"body": "…eturn type in BrowserTabToolExecutor",
"is_bot": false,
"headline": "fix(browser): update import for NavigateEntry and ensure consistent r…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T01:18:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bdfc21c39f3da0aa9c754f7ef9323d0697409074",
"body": "…eturn type in BrowserTabToolExecutor",
"is_bot": false,
"headline": "fix(browser): update import for NavigateEntry and ensure consistent r…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T01:07:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f3b05f33489ebc6d85266150db31a517f8316215",
"body": "…ce CLI doctor with log browsing\n\n- Add executeCdpCommand() to WebDriver API for arbitrary Chrome DevTools Protocol commands\n- Implement CDP command execution in PulsarWebDriver and DirectChromeProtocol\n- Add 'cdp' CLI command with JSON params support (--json, --file, --stdin)\n- Add 'doctor-log' CLI\n[…]\nion to doctor command for destructive repairs\n- Update e2e tests for new doctor options count\n- Move completed coworker tasks from 1ready to 6git-pushed\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(agentic,rest,cli): add arbitrary CDP command execution and enhan…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-12T00:50:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "afb9b34720cad5b84618c43e3c365d916cf48ee5",
"body": null,
"is_bot": false,
"headline": "fix(done): add-skills-cli-command",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T19:37:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9425cb9925e6cac06f97d9f3c21816b12261c06",
"body": null,
"is_bot": false,
"headline": "chore",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T19:12:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04f4d6115070a32e85791ac383993eab451f0f5f",
"body": "…r user data directory",
"is_bot": false,
"headline": "fix: replace computeTestContextDir with computeRandomTmpContextDir fo…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T19:03:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "96044efdb73209599e7332d9f70102756f44ebbb",
"body": "- Move core API interfaces from pulsar.browser to browser4.api\n- Rename chrome/detail → chrome/network\n- Rename chrome/handler → chrome/protocol\n- Create api subpackages: dom, manage, model, scripting, snapshot\n- Add pulsar.browser.Browser/WebDriver compatibility shims\n- Relocate tests to match new package structure\n- All 176 tests pass\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(browser4-browser): restructure packages to match 4.12 layout",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T19:03:34Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6a20067881978f67f1e2a5a22d69f790d5dfe4c8",
"body": "…discovery, improved page classification\n\n- agentic: add --wait-selector/--wait-timeout to eval/evaluateValue for\n React/SPA pages that load content asynchronously\n- rest: autoDiscoverRepeatingSelector now returns ranked DiscoveredSelector\n list with text-length scoring bonus to avoid nav-<li> bia\n[…]\nps\n- test: update autoDiscoverRepeatingSelector test for new return type\n- coworker: move Use Cases 20/21/23/24 from 1ready to 6git-pushed (review done)\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(agentic,rest,cli): add --wait-selector to eval, ranked selector …",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T16:27:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ef5e1fcb786b74cfa8f40cb364e84228f07a9ea8",
"body": "…g-looking state dir\n\n - PulsarWebDriver: update navigateUrl after redirect so currentUrl() falls\n back correctly when document.URL is blank (fixes htmlsnapshot 'Nil url'\n failures after complex redirects)\n - MCPToolController: surface actionable error message for Nil-url failures\n in html_sna\n[…]\nfacts from being committed\n - coworker: move reviewed use-case issues to done/discard folders, add\n new review task and competitive-monitoring summary\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: navigateUrl redirect tracking, better nil-url errors, reject fla…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T15:39:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ef0e44ac82c0a3f88ea71b061049779ea1c639ca",
"body": "…eview, add due-diligence task\n\n- Move Use Case 12 (Due Diligence Automation) review to review/done\n- Complete Use Case 13 (Competitive Monitoring) review: ACCEPT issue 1, DEFER issue 2, DUPLICATE issue 3\n- Add DUPLICATE checkbox option to all Use Case 13 issues missing it\n- Add new main task for due diligence automation\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(coworker): mark Use Case 12 review done, complete Use Case 13 r…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T15:04:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b2409c27098612f106bf15ece2cf623a1be726dd",
"body": "…reviews done\n\nCLI (browser4-cli):\n- Remove session-scoped alternation conversion warning; conversion is now\n silent and documented in --help instead.\n- Update snapshot grep help text to document Rust regex syntax (bare |\n for alternation, -E is accepted but a no-op).\n\nCoworker:\n- Mark Issues 1-5 \n[…]\nX in Use Case 12 review.\n- Move competitive-product-analysis and hiring-market-cross-platform-comparison\n from 1ready to 6git-pushed (review complete).\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: silence regex alternation warning, update help, mark coworker …",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T15:02:01Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "4e7d6aa22a9fee59ccf5fdd9aff2f3ad7ec17fd1",
"body": "…improve error messages\n\n- feat(agentic): add optional 'submit' param to type/fill — presses Enter after input\n- fix(rest): include cause.message in MCP tool error responses when distinct\n- docs(cli): add category aliases for --help filtering (nav, extract, kb, session, etc.)\n- docs(cli): add Common\n[…]\nlls): add Windows shell quoting troubleshooting guide to browser4-cli SKILL.md\n- chore(coworker): move reviewed issues to done/discard, add 1ready tasks\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(agentic,cli): add submit param to type/fill, overhaul CLI help, …",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T14:55:42Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "47a218035b14a1ecb7f7a4f2ff5fd7e69325e9e4",
"body": "… review SPA\n\nButton visibility for btn-mark-done, btn-ai-review-all, and btn-mode-toggle\nwas only set inside renderAllIssues(). renderSingleIssue() never touched them,\nso after viewing a zero-issue file in 'all' mode (which hid the buttons),\nswitching to a file with issues in single mode left them \n[…]\n hidden.\n\nCentralize the button show/hide logic in renderReview() so both rendering\nmodes get consistent visibility based on state.parsed.issues.length.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(coworker): Mark Done button disappearing after switching files in…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T14:53:25Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "c8fd539f475c8048bc44ba9aca3c5095c9ad41b0",
"body": "- MCPToolController: add actionable guidance in error responses when\n htmlsnapshot get/all fails (suggest goto <url> first, then htmlsnapshot)\n- CLI: translate backend htmlsnapshot errors into user-friendly messages\n with a tip to run first\n- SKILL.md: document flag for inline snapshot viewing\n- coworker: move reviewed issues to done/discard, add new review task",
"is_bot": false,
"headline": "fix(htmlsnapshot): improve error messages for and endpoints",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T14:39:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bbb62dae9c254bf9dc64936ac0fc149ab72e610f",
"body": "…essages\n\n- BrowserTabToolExecutorTest: 3 new tests verifying awaitPromise flows through\n eval/evaluateValue to the two-arg evaluateValueDetail overload\n- MCPToolControllerTest: 4 new tests for awaitPromise pass-through, error\n message formatting, 'not focusable' tip inclusion, and tip exclusion\n-\n[…]\new Extended scenario testing Promise\n resolution via eval --await in a live browser\n\nAll 69 Kotlin + 8 Rust unit tests pass. E2E tests compile cleanly.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "test: add unit + e2e tests for awaitPromise eval and improved error m…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T13:38:47Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "7ffa98d91aa37a7199805dbb2a40cd105e7a68d7",
"body": "…ved error messages\n\n- Add awaitPromise parameter to evaluateValueDetail across the stack\n (WebDriver interface, PulsarWebDriver, JsHandler, BrowserTabToolExecutor)\n- Wire --await CLI flag to awaitPromise for eval command in commands.rs\n- Enhance MCPToolController error responses to include cause m\n[…]\nnnection message to show session name and current page\n- Add eval --await and fill/click tips in tips.rs\n- Move completed issue to 6git-pushed directory\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(agentic,cli): add awaitPromise support for async JS eval + impro…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T11:50:12Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e6ce151db2d01dbffc586d28098e72bcdbca9223",
"body": "Replace all file-content timestamps with OffsetDateTime format\n(yyyy-MM-ddTHH:mm:sszzz, e.g. 2026-07-11T19:32:00+08:00).\n\n- Add Get-CoworkerTimestamp helper to config.ps1\n- Update all PS scripts: Logging, Locks, task-logger, scheduler,\n fetch/triage-github, organize-task-files, update-readmes,\n me\n[…]\nhon (organize.py): isoformat(timespec='seconds')\n- Filename timestamps (yyyyMMdd-HHmmss) left unchanged — compact\n format is correct for filesystem use\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(coworker): standardize datetime format to OffsetDateTime",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T11:44:11Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "3692729ca386724d189b213c90cce3f62b87809e",
"body": "…support\n\nMCP auto-discover selector (MCPToolController.kt):\n- Add chrome penalty (×0.3) for patterns inside nav/header/footer/aside\n or elements with ARIA navigation/banner/contentinfo/complementary roles\n- Add viewport position weighting: boost prime content band 100-800px\n (×1.3), penalize deep\n[…]\nry visual-clustering path\n\nTask management:\n- Move completed issue reviews to review/done\n- Add task files for e-commerce and crawl-link-discovery tasks\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: improve auto-discover selector scoring + enable snapshot batch …",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T11:35:33Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "e5778a96c6a01105796d1d1d4691267fb211524c",
"body": null,
"is_bot": false,
"headline": "fix(done): crawl-link-discovery-review",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T09:30:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e92976aa07a20a30e1dbccefa4c449fbefdd3a65",
"body": "…worker.ps1",
"is_bot": false,
"headline": "fix(docs): update instructions for handling ACCEPT state issues in co…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T09:20:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ff79e4d23fa1395c5bd77cd0b3416509e61ff705",
"body": null,
"is_bot": false,
"headline": "fix(done): crawl-link-discovery",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T09:14:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7892219e8c8ffd923e2a516d003ccaed6707f006",
"body": "- Move crawl-link-discovery review to done (marked DUPLICATE)\n- Remove stale review files (html-snapshot-extraction reviewed/merged)\n- Add fix-crawl-link-discovery-issues task for 6git-pushed\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: finalize crawl-link-discovery review, add fix task",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T08:49:53Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f5c72d6178a1ce3a768e1fd09769e38d68823b7b",
"body": null,
"is_bot": false,
"headline": "remove stale files",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T08:16:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a78f7d38b3fb48b39058ddfb3ab2a3fd963e98d9",
"body": "…ME files",
"is_bot": false,
"headline": "fix(docs): clarify installation instructions for browser4-cli in READ…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T07:57:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "58fe69b2ff08a1188074c71f798c8f445f4c5866",
"body": "- Move Use Case 6 issues to review/done\n- Add ecommerce category deep analysis task to main/6git-pushed\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "add review done and pushed task files",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T06:49:28Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "38a56f72354ecddaee993bfa2252b3b3817c31e3",
"body": null,
"is_bot": false,
"headline": "add issue review tasks tested and generated in 2026/07/10",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T06:42:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b2d9724bf100716891a82ee9b12274cc41bc86d6",
"body": null,
"is_bot": false,
"headline": "remove stale files",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T06:11:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ea13c0f37800d551e15462a328af4491f5efe2f",
"body": null,
"is_bot": false,
"headline": "Auto-bump versions",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T05:55:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8564463b1e856525f67488e08e09cec29d11cd08",
"body": "…er creation",
"is_bot": false,
"headline": "fix(BrowserToolExecutor): update newTab to navigate to URL after driv…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T05:42:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f368fdaf828417502bf73172b83c7088eec023a1",
"body": null,
"is_bot": false,
"headline": "test report 2026/07/10",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T05:41:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "80473ab674c2ecd87d698063496e7e1568ed28b6",
"body": null,
"is_bot": false,
"headline": "test report 2026/07/10",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-11T05:36:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c5ed86b50eb15ca7c2938109da3b8509a6a1a7a1",
"body": "- Simplify Quick Start to plain text instruction block\n- Regenerate README.zh.md from current README.md\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: update Quick Start section and sync Chinese translation",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T10:37:25Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e8d2bd01c74731475349fb10aba76180daedd9bd",
"body": null,
"is_bot": false,
"headline": "fix(test): correct issue file location",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T09:45:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "32f20f5b8431dfdfbf407854e56560c50addd7a4",
"body": null,
"is_bot": false,
"headline": "Auto-bump versions",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T09:32:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "105166b8e516e2c986f37b898f9d7625da254e83",
"body": "Match the documented behavior in the README. Both Restore-OrphanedWorkingFiles\nfunctions (refine-drafts.ps1, refine-github-issues.ps1) now use 120 minutes.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(coworker): extend orphan recovery timeout from 30 min to 2 hours",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T09:25:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3ddd2ea1e432f316d05c97b7330e0fcd4575e1b3",
"body": "The health check polled /api/issue-review/health every 30s and\ndisplayed an LLM status chip (ready/offline/paused). This is\nunnecessary noise in the toolbar — the server already handles\ndegradation via circuit breaker and heuristic fallback.\n\nRemoves: checkLlmHealth(), updateAiButtonStates(), llmHealthy var,\nthe llm-chip span, and the 30s polling interval.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(review-spa): remove LLM health check polling from UI",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T08:42:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8556803041e4cc67ef93cfc56155a201122a86eb",
"body": "Co-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: move snapshot-mastery issues to done and 6git-pushed",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T08:41:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "170f63375ff592fffa87ac6bd977b93ae6787ddf",
"body": "…cision panel\n\nConsolidate the review workflow by moving prev/next issue and\nprev/next file navigation, issue counter, progress bar, and save\nbutton from separate top and bottom nav bars into the floating\nreview decision panel. This keeps everything the reviewer needs\n— decision buttons, notes, AI review, and navigation — in one\ndraggable panel.\n\nRemoves ~40 lines of fixed nav bar HTML/CSS, replaces with a\ncompact nav row inside the float panel.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(review-spa): move prev/next navigation to floating review de…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T08:40:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c90042e651b2b569f975745161386a3c4a30fee6",
"body": "Co-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: remove stale refine/0ready files",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T07:13:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "019e3ecfa1952482f7f9172a07188bd6eb24e9c5",
"body": "Tests cover:\n- _buildArgs: null prompt returns base args + -p (no prompt text),\n provided prompt includes text (backward compat for short prompts)\n- _writePromptFile: writes to temp file, preserves content including\n multiline special chars, 100KB+ prompts, empty prompts, unique filenames\n- PROVID\n[…]\ne correct\n- heuristicDecision: rules work correctly when review history is present\n\nAlso export _buildArgs and _writePromptFile from llm.js for testing.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "test(llm): add unit tests for stdin-based prompt file invocation",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T07:13:15Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0fa34d481b24eb5e5a3e865741c5deabd826167c",
"body": "…onal arg\n\nPreviously, _invoke() passed the full prompt text as a positional CLI\nargument (claude -p \"long prompt...\"). This hits command-line length\nlimits on Windows and causes escaping issues with special characters,\nnewlines, and quotes.\n\nNow _invoke() writes the prompt to a temp file and pipes\n[…]\nn,\nkeeping -p (--print mode) for non-interactive output. Short prompts in\n_preWarm() and checkHealth() ('say ok') continue to use the -p flag\ndirectly.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(llm): pass long prompts via stdin temp file instead of CLI positi…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T07:10:59Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f8324201aff858d7d3457b9c4800303eea63830e",
"body": null,
"is_bot": false,
"headline": "fix(done): crawl-link-discovery",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:40:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f70c9b02311c7ffff8dfbe212995177dd768220",
"body": null,
"is_bot": false,
"headline": "fix(done): 20260709-222157-htmlsnapshot-inspect-discovery.issues",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:34:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "339768296966657fab5588c05811f18d2715b738",
"body": null,
"is_bot": false,
"headline": "fix(done): 20260709-221858-hacker-news.issues",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:34:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8b938b3f328c668c921165230842d556b1578fe4",
"body": null,
"is_bot": false,
"headline": "fix(test): move test files to test directory",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:33:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6367a99a4bafa98757fd7b0338fa2dc2223d2e29",
"body": "Resolve-Path throws on wildcard patterns that match multiple items\nor on malformed paths. Catch the error and exit with a clear message\ninstead of letting the raw exception crash the script.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(coworker): wrap Resolve-Path in try/catch for invalid TaskFile paths",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:23:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "afb11a5713223d5172fe2afa1407f4c62f5653be",
"body": "Replace flat 2-second sleeps with `[Math]::Pow(2, $retryCount)`,\nwhich yields 2s, 4s between the three attempts (max 6s total wait\nvs. the previous 4s). Gives transient failures more breathing room\nbefore giving up.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(coworker): use exponential backoff in rename retry loop",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:23:20Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "3b28d4e90013999f246f9fef7d824dee6d86e010",
"body": "…discarding\n\nPreviously `2>$null` silently discarded all error output from the\nmemory-context script, making failures undiagnosable. Redirect stderr\nto a dated temp file and log its content as a WARN when the script\nproduces no stdout — giving the operator a clue instead of silently\nreturning empty context.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(coworker): capture memory-context stderr to temp file instead of …",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:22:50Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "75b4ff7d0179fcc34bab680a1e966d1dc3d414c9",
"body": "If another process moves or deletes the renamed file between the\nMove-Item and the Get-Item that refreshes the reference, the\nscript crashes. Wrap in try/catch with a [SKIP] warning and continue.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(coworker): guard Get-Item after rename against file-vanished race",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:22:09Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "67d4e3629235f1c344fe053fb9f21005c2dbd99c",
"body": "The date parts (, , , )\nwere computed both before and inside the taskRoot foreach loop with\nidentical values. was also created twice. Moved the\nsingle computation to the top (before the loop), added\nthere, and removed both inner duplicates.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(coworker): deduplicate date calculations and log-dir creation",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:21:45Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "07c85cc83a72f9df2c8a73ab270ab8f8d2aceac2",
"body": "The three Get-Content calls that run after the agent process exits\n(remaining stdout, stderr display, and agent-log append) had no\nerror handling — a transient file lock would crash the task loop.\nEach is now wrapped in try/catch with appropriate WARN / VERBOSE\nlogging so the task can finish gracefully.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(coworker): wrap post-process Get-Content calls in try/catch",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:20:50Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f758af52cf075aaf85c7561f25cd6dbbaf51a7e8",
"body": "The empty catch block in the agent stdout-monitoring loop silently\ndiscarded transient file-lock failures. Log them at VERBOSE level so\nthe operator can tell whether the agent is producing output or the\nmonitor is starved. Also replaced the wasteful truthiness\ncheck with .\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(coworker): log stdout-monitor file-lock errors instead of swallowing",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:20:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e7bf3dc36703279c4cafd84ab6882e912d5b3ce2",
"body": "…tion",
"is_bot": false,
"headline": "fix(cli): update task identifiers and enhance snapshot help documenta…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:17:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c9a1daeb881158a46777e3dae1b11c9c846d9459",
"body": "Replace inline .single-review-block in single-issue mode with a\nfixed-position floating panel that can be dragged by its header,\nresized via a bottom-right handle, and dismissed with a close button.\nPosition and size persist across page reloads via localStorage.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(gui): floating draggable resizable Review Decision panel",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:16:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c4f4d96a15c4a9e280a7f577f1c7da9c81332655",
"body": null,
"is_bot": false,
"headline": "fix(done): crawl-link-discovery-review",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T06:04:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6a5382e41da6e8c0a86e41cf29f251118f47ef83",
"body": "The keyboard shortcut Shift+Ctrl+M calls markAllDone() (directory-wide),\nbut the hint was displayed on the single-file Mark Done button. Move it\nto the All Done button so the hint matches actual behavior.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(gui): move Shift+Ctrl+M hint from Mark Done to All Done button",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T05:58:59Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1182948cbeb6d4d1406d505789292e166c39fa62",
"body": "On Windows, the npm-installed 'claude' CLI is a Unix shell script\nthat CreateProcess cannot execute directly. With shell: true, cmd.exe\nresolves PATHEXT correctly and launches the .cmd wrapper, which in\nturn invokes the real claude.exe.\n\nWithout this, every execFile('claude', ...) call fails silently and\nthe issue-review SPA shows 'LLM offline' permanently.\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(coworker): enable shell: true for LLM execFile on Windows",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T05:37:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "cbc386a3e5720fe27c5724651a52e58cb0fb8d65",
"body": null,
"is_bot": false,
"headline": "remove stale files",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T05:20:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6eabc7eac36da59634a45331657a9333b4658659",
"body": "- Update crawl-results.csv and extract-products.sql\n- Add evaluation reports (htmlsnapshot, viewport-pdf)\n- Add SQL queries (comprehensive, books, test, query)\n- Add crawl-results.json and python-extract-schema.json\n- Move issue reviews to done/discard and add new review drafts\n- Update seed-urls and attached-state\n- Remove page_info.js\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: update project files, queries, and evaluation reports",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-10T04:54:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4b64568d3b8a0f42405abef6800b0560781d6a16",
"body": "…ures\n\n- B4ProjectUtils: add maxDepth, .use{} stream closure, and try-catch\n to all three Files.walk calls (max depth 5-20) to prevent walking\n into deeply nested target/ directories in CI environments\n- B4LLMUtils: catch exceptions in copySourceFileAsResource and\n readSourceFileFromResource, log\n[…]\nermanently poison the JVM state\n- AgentToolExecutor: call generateAllOnce() in init to match\n BrowserTabToolExecutor pattern and avoid empty tool specs\n\nCo-Authored-By: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: harden resource loading and tool spec generation against CI fail…",
"author_name": "platon.AI",
"author_login": "insidegalaxyeye",
"committed_at": "2026-07-10T04:14:58Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5764b6fda04fde41077415859a83f84afd392ddc",
"body": "- Move coworker/tasks/200issues/draft/2026/0709/ → coworker/tasks/issues/draft/2026/0709/\n- Move skills/task-token-usage and skills/organize-task-files → coworker/skills/\n- Update all references in scripts, docs, and task content files\n- Fix organize.py BASE_DIR calculation for new location",
"is_bot": false,
"headline": "chore: rename 200issues to issues, move coworker skills under coworker/",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-10T03:23:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c1dd91b9068d9403af869f5c623559b21709274",
"body": null,
"is_bot": false,
"headline": "fix(done): hacker-news",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:45:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a072cf026afd7a179b6c7059a00adf65894d168",
"body": null,
"is_bot": false,
"headline": "fix(done): crawl-link-discovery",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:44:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a30d4c10fbdc8ff1ff4694ac39d74da411017c1",
"body": null,
"is_bot": false,
"headline": "fix(done): attach-remote-debug",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:37:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "016248bb2c60f7228192cff75cc9dd0791f4d1d0",
"body": null,
"is_bot": false,
"headline": "fix(done): advanced-mouse-interaction",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:36:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6b3de64b766ccc875319e9f3a9b0dc2953b19970",
"body": null,
"is_bot": false,
"headline": "fix(done): Something-else",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:29:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cc72446dcf3e619b788ca69bf40bc9e8ffeaf558",
"body": null,
"is_bot": false,
"headline": "fix(done): Just-let-me-know-what-you-have-in-mind-and-I-ll-get-started",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:28:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6bf3e6ed3bc6200c6a12549d9d91b9454cf68403",
"body": null,
"is_bot": false,
"headline": "fix(done): Just-let-me-know-what-you-have-in-mind-and-I-ll-get-started",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:28:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d09b0f00d6af5796c4286db34988b1eb97b22a23",
"body": null,
"is_bot": false,
"headline": "fix(done): Something-else-entirely-just-let-me-know-what-you-have-in-mi",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:28:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f7dbb5462816edbd1e28da0010cb08d2f7d671f",
"body": null,
"is_bot": false,
"headline": "fix(done): What-are-you-looking-to-create",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:27:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "017fe9ccb970cbcc696c1ad59b2ab0d0e81c7d75",
"body": null,
"is_bot": false,
"headline": "fix(done): What-are-you-looking-to-make",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:27:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab5298c774f21e49cd3df40287c889343b42ecf0",
"body": null,
"is_bot": false,
"headline": "fix(done): What-are-you-looking-to-make",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:27:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c57f3f70e0dfaf2375c38a27b1f1a979db5e40ec",
"body": null,
"is_bot": false,
"headline": "fix(done): Let-me-know-and-I-ll-get-started",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:27:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ee41c233005c908b55eb17ec3c4b372c50731fc8",
"body": null,
"is_bot": false,
"headline": "fix(done): What-are-you-looking-to-create",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:27:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eeb0a9b0cd463d9fce64d60f2e9ca2ddb22230f3",
"body": null,
"is_bot": false,
"headline": "fix(done): 20260708-164841-attach-remote-debug.issues",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:26:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f49dff9290198338ae22fdcbeb3323d96081bfab",
"body": null,
"is_bot": false,
"headline": "fix(done): 20260708-164441-amazon.issues",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:26:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cb9795c3aee8b991a1a13f5ac32e3737f5db1cd1",
"body": null,
"is_bot": false,
"headline": "fix(done): Please-provide-more-details-and-I-ll-get-started",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:26:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "66ba317f2b0417ee916774bf0ca295a99ea4bdb6",
"body": null,
"is_bot": false,
"headline": "fix(done): Something-else-entirely",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:26:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "661522868b66e73e151f072fbc9dbe9c77208b16",
"body": null,
"is_bot": false,
"headline": "fix(done): 20260708-184937-javascript-evaluation.issues",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:15:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9121456fe9f872694a0a538fd2b602666e129d52",
"body": "…r directory filtering\n\nAfter stripping the issues/review/ prefix, the directory is a substring\nof the full file path, not a prefix. Changed indexOf checks from ===0\nto >=0 in triggerAiReviewDirectory(), markAllDone(), and zero-issue\ncounting.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(gui): use substring match (>=0) instead of prefix match (===0) fo…",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:13:58Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f43cdf8372c5d0ae84c57f1f1a1247264f2ef33e",
"body": null,
"is_bot": false,
"headline": "fix(done): 20260708-184937-javascript-evaluation.issues",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:07:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d1f93f5d3175ce40f5d0a1f8eb985a116c6b10b9",
"body": "The frontend was sending the full path (issues/review/2026/0708) as\nthe directory parameter, but the server joins that with the review\nroot, resulting in a doubled path. Fixed extractDirectory() to strip\nthe issues/review/ prefix before extracting the parent directory.\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(gui): strip issues/review/ prefix when extracting directory",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T09:05:35Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5a7b40b6bc9273158802fd7d169ec069f6ca2cd2",
"body": "- Frontend markDone: refuses with error toast, tells user to discard instead\n- Frontend markAllDone: auto-discards zero-issue files (moves to done/discard)\n- Frontend: hides Mark Done/AI Review buttons for zero-issue files,\n shows prominent 'discard this file' guidance\n- Server mark-done: rejects w\n[…]\nFound (0)' summary\n instead of raw content for zero-issue files\n- Fix server.js iss.reviewDecision -> iss.review.decision (missed in refactor)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(gui): prevent zero-issue files from entering ready queue",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T08:59:55Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0de0611d32a57aedad13e3787c6e76ca2c1acacd",
"body": "The AI reasoning card wasn't appearing because the regex-based extraction\nfrom notes was fragile. Fixed by storing AI reasoning as a separate\nin-memory field (issue._aiReasoning) when the AI reviews an issue.\n\n- getAiReasoning(issue) replaces extractAiReasoning(notes)\n - First checks issue._aiReaso\n[…]\ns (single, batch, directory)\n- Removed ^ anchor from regex to handle any leading whitespace\n- Directory review syncs _aiReasoning to live state\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(gui): store AI reasoning as dedicated field, fix invisible card",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T08:11:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "0505dd769fdfe75cbc99d139a61048f934a320fc",
"body": "- Increase textarea min-height: 48px->80px (all-issues), 56px->100px (single-issue)\n- Add line-height: 1.5 for better readability\n- Move AI reasoning card from above textarea to below it\n- Move callout below textarea\n- Textarea is now the first editable element after decision buttons,\n with AI rati\n[…]\nd] [textarea + button] [callout]\nLayout after: [textarea + button]\n [AI reasoning card]\n [callout (if non-ACCEPT)]\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "refactor(gui): bigger textarea, move AI reasoning below it",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T08:05:19Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "710ce370ac3c492a189d01ffcc9d707175e34b25",
"body": "- Single-issue AI review: await saveReview({silent:true}) immediately\n instead of relying on 2-second auto-save timer\n- Batch AI review (all in file): same immediate save\n- Directory AI review: save EACH file to disk via\n ISSUE_MODEL.reconstructMarkdown() + apiPost as it's processed\n (previously \n[…]\n before 2-second auto-save timer fires\n 2. Server crash between AI review and auto-save\n 3. Directory review only persisted the selected file\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(gui): force immediate save after AI review, fix data loss bugs",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T07:56:18Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "45dcf9e72da86071a690e847dd3070d11032c95b",
"body": "Extract the AI's rationale from the [AI suggested: DECISION] prefix and\ndisplay it in a styled accent-bordered card above the editable notes\ntextarea. Works in both single-issue and all-issues views, for both\nACCEPT and non-ACCEPT decisions.\n\n- extractAiReasoning(notes) — parses decision + reasoning\n[…]\ne\n\nBefore: reasoning was only visible inside the textarea (easily missed)\nAfter: 🤖 AI Reasoning → REJECT card displayed prominently above notes\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(gui): show AI reasoning prominently above notes textarea",
"author_name": "galaxyeye",
"author_login": "galaxyeye",
"committed_at": "2026-07-09T07:51:41Z",
"body_truncated": true,
"is_coding_agent": true
}
],
"releases_count": 39,
"commits_last_year": 5042,
"latest_release_at": "2026-07-19T16:27:32Z",
"latest_release_tag": "v4.12.0-rc.3",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 45,
"days_since_latest_release": 5,
"mean_days_between_releases": 2.4
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "browser4-cli",
"exists": true,
"license": "Apache-2.0",
"keywords": [
"browser",
"browser4",
"browser4-cli",
"automation",
"headless",
"chrome",
"cdp",
"cli",
"agent"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/browser4-cli",
"is_deprecated": false,
"latest_version": "0.1.32",
"repository_url": "https://github.com/platonai/Browser4",
"versions_count": 33,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 3322,
"first_published_at": "2026-05-11T02:11:05.182000Z",
"latest_published_at": "2026-07-14T07:08:56.103000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 11
}
]
},
"popularity": {
"forks": 145,
"stars": 1093,
"watchers": 19,
"fork_history": {
"days": [
{
"date": "2018-04-10",
"count": 2
},
{
"date": "2018-04-25",
"count": 1
},
{
"date": "2018-12-16",
"count": 1
},
{
"date": "2018-12-22",
"count": 1
},
{
"date": "2019-01-15",
"count": 3
},
{
"date": "2019-01-16",
"count": 3
},
{
"date": "2019-02-24",
"count": 1
},
{
"date": "2019-06-07",
"count": 1
},
{
"date": "2019-06-13",
"count": 1
},
{
"date": "2019-06-14",
"count": 1
},
{
"date": "2019-07-05",
"count": 1
},
{
"date": "2019-07-23",
"count": 1
},
{
"date": "2019-08-10",
"count": 1
},
{
"date": "2019-09-14",
"count": 1
},
{
"date": "2019-11-01",
"count": 1
},
{
"date": "2019-12-16",
"count": 1
},
{
"date": "2020-02-05",
"count": 1
},
{
"date": "2020-03-19",
"count": 1
},
{
"date": "2020-06-10",
"count": 1
},
{
"date": "2022-04-13",
"count": 1
},
{
"date": "2022-07-04",
"count": 1
},
{
"date": "2022-08-15",
"count": 1
},
{
"date": "2022-09-26",
"count": 1
},
{
"date": "2022-11-11",
"count": 1
},
{
"date": "2022-11-20",
"count": 1
},
{
"date": "2022-11-22",
"count": 1
},
{
"date": "2022-12-19",
"count": 1
},
{
"date": "2023-01-06",
"count": 1
},
{
"date": "2023-02-09",
"count": 1
},
{
"date": "2023-02-15",
"count": 1
},
{
"date": "2023-02-21",
"count": 1
},
{
"date": "2023-02-22",
"count": 1
},
{
"date": "2023-03-17",
"count": 1
},
{
"date": "2023-03-24",
"count": 1
},
{
"date": "2023-04-19",
"count": 1
},
{
"date": "2023-04-25",
"count": 1
},
{
"date": "2023-05-04",
"count": 1
},
{
"date": "2023-05-15",
"count": 1
},
{
"date": "2023-05-22",
"count": 1
},
{
"date": "2023-05-23",
"count": 1
},
{
"date": "2023-05-25",
"count": 1
},
{
"date": "2023-06-07",
"count": 1
},
{
"date": "2023-06-12",
"count": 1
},
{
"date": "2023-06-23",
"count": 2
},
{
"date": "2023-06-25",
"count": 1
},
{
"date": "2023-08-31",
"count": 1
},
{
"date": "2023-09-05",
"count": 1
},
{
"date": "2023-09-21",
"count": 1
},
{
"date": "2023-10-13",
"count": 1
},
{
"date": "2023-10-24",
"count": 1
},
{
"date": "2023-10-25",
"count": 1
},
{
"date": "2023-10-27",
"count": 1
},
{
"date": "2023-10-30",
"count": 1
},
{
"date": "2023-11-09",
"count": 2
},
{
"date": "2023-11-21",
"count": 1
},
{
"date": "2023-11-24",
"count": 1
},
{
"date": "2023-12-13",
"count": 1
},
{
"date": "2023-12-15",
"count": 1
},
{
"date": "2023-12-21",
"count": 1
},
{
"date": "2024-01-13",
"count": 1
},
{
"date": "2024-01-15",
"count": 1
},
{
"date": "2024-01-23",
"count": 1
},
{
"date": "2024-02-17",
"count": 1
},
{
"date": "2024-02-25",
"count": 1
},
{
"date": "2024-02-26",
"count": 5
},
{
"date": "2024-02-27",
"count": 2
},
{
"date": "2024-02-28",
"count": 2
},
{
"date": "2024-02-29",
"count": 1
},
{
"date": "2024-03-02",
"count": 1
},
{
"date": "2024-03-05",
"count": 1
},
{
"date": "2024-03-09",
"count": 1
},
{
"date": "2024-03-13",
"count": 1
},
{
"date": "2024-03-14",
"count": 1
},
{
"date": "2024-03-16",
"count": 1
},
{
"date": "2024-04-10",
"count": 1
},
{
"date": "2024-04-13",
"count": 1
},
{
"date": "2024-04-15",
"count": 1
},
{
"date": "2024-04-23",
"count": 1
},
{
"date": "2024-04-25",
"count": 1
},
{
"date": "2024-05-10",
"count": 1
},
{
"date": "2024-05-16",
"count": 1
},
{
"date": "2024-05-20",
"count": 1
},
{
"date": "2024-05-27",
"count": 1
},
{
"date": "2024-06-05",
"count": 1
},
{
"date": "2024-06-13",
"count": 1
},
{
"date": "2024-06-15",
"count": 1
},
{
"date": "2024-06-23",
"count": 1
},
{
"date": "2024-06-28",
"count": 1
},
{
"date": "2024-07-14",
"count": 1
},
{
"date": "2024-07-15",
"count": 1
},
{
"date": "2024-07-27",
"count": 1
},
{
"date": "2024-07-31",
"count": 1
},
{
"date": "2024-08-22",
"count": 1
},
{
"date": "2024-09-01",
"count": 1
},
{
"date": "2024-10-18",
"count": 1
},
{
"date": "2024-10-28",
"count": 1
},
{
"date": "2024-11-19",
"count": 1
},
{
"date": "2024-12-16",
"count": 1
},
{
"date": "2025-02-05",
"count": 1
},
{
"date": "2025-03-06",
"count": 1
},
{
"date": "2025-03-08",
"count": 1
},
{
"date": "2025-03-13",
"count": 1
},
{
"date": "2025-04-02",
"count": 1
},
{
"date": "2025-04-07",
"count": 1
},
{
"date": "2025-04-12",
"count": 1
},
{
"date": "2025-05-16",
"count": 1
},
{
"date": "2025-05-21",
"count": 1
},
{
"date": "2025-05-27",
"count": 1
},
{
"date": "2025-07-01",
"count": 1
},
{
"date": "2025-07-23",
"count": 1
},
{
"date": "2025-08-06",
"count": 2
},
{
"date": "2025-08-13",
"count": 1
},
{
"date": "2025-09-09",
"count": 1
},
{
"date": "2025-09-25",
"count": 1
},
{
"date": "2025-10-12",
"count": 1
},
{
"date": "2025-11-03",
"count": 1
},
{
"date": "2025-11-20",
"count": 1
},
{
"date": "2025-11-22",
"count": 1
},
{
"date": "2025-12-07",
"count": 1
},
{
"date": "2025-12-09",
"count": 1
},
{
"date": "2025-12-27",
"count": 1
},
{
"date": "2026-01-08",
"count": 1
},
{
"date": "2026-01-23",
"count": 1
},
{
"date": "2026-03-17",
"count": 1
},
{
"date": "2026-05-19",
"count": 1
},
{
"date": "2026-05-20",
"count": 2
},
{
"date": "2026-06-03",
"count": 1
},
{
"date": "2026-07-06",
"count": 1
},
{
"date": "2026-07-11",
"count": 1
},
{
"date": "2026-07-23",
"count": 1
}
],
"complete": true,
"collected": 145,
"total_forks": 145
},
"star_history": null,
"open_issues_and_prs": 3
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"examples",
"sample"
],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": true,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"browser4-agent-tools/pom.xml",
"browser4-agentic/pom.xml",
"browser4-apps/browser4-bundle/pom.xml",
"browser4-apps/browser4-standalone/pom.xml",
"browser4-apps/pom.xml",
"browser4-boot/pom.xml",
"browser4-core/browser4-browser/pom.xml",
"browser4-core/browser4-common/pom.xml",
"browser4-core/browser4-plugins/browser4-parse/pom.xml",
"browser4-core/browser4-plugins/browser4-protocol/pom.xml",
"browser4-core/browser4-plugins/pom.xml",
"browser4-core/browser4-resources/pom.xml",
"browser4-core/browser4-skeleton/pom.xml",
"browser4-core/pom.xml",
"browser4-dependencies/pom.xml",
"browser4-rest/pom.xml",
"browser4-tests/browser4-rest-tests/pom.xml",
"browser4-tests/browser4-tests-common/pom.xml",
"browser4-tests/pom.xml",
"browser4-tests/pulsar-e2e-tests/pom.xml",
"browser4-tests/pulsar-it-tests/pom.xml",
"cli/browser4-cli/Cargo.toml",
"examples/browser4-examples/pom.xml",
"examples/pom.xml",
"pom.xml"
],
"largest_source_bytes": 1073878,
"source_files_sampled": 809,
"oversized_source_files": 30,
"agent_instruction_files": [
"AGENTS.md",
"skills/browser4-cli/references/agent.md"
],
"agent_instruction_max_bytes": 27338
},
"dependencies": {
"manifests": [
"browser4-agent-tools/pom.xml",
"browser4-agentic/pom.xml",
"browser4-apps/pom.xml",
"browser4-boot/pom.xml",
"browser4-core/pom.xml",
"browser4-dependencies/pom.xml",
"browser4-rest/pom.xml",
"browser4-tests/pom.xml",
"cli/package.json",
"examples/pom.xml",
"pom.xml"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "com.fasterxml.jackson.core:jackson-databind",
"direct": true,
"version": "2.9.9.3",
"severity": "critical",
"ecosystem": "maven",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-27xj-rqx5-2255",
"GHSA-288c-cq4h-88gq",
"GHSA-4w82-r329-3q67",
"GHSA-57j2-w4cx-62h2",
"GHSA-58pp-9c76-5625",
"GHSA-5949-rw7g-wx7w",
"GHSA-5jmj-h7xm-6q6v",
"GHSA-5p34-5m6p-p58g",
"GHSA-5r5r-6hpj-8gg9",
"GHSA-758m-v56v-grj4"
],
"fixed_version": "3.1.4",
"advisory_count": 50,
"oldest_advisory_days": 2496
},
{
"name": "quinn-proto",
"direct": false,
"version": "0.11.14",
"severity": "high",
"ecosystem": "crates",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-4w2j-m93h-cj5j",
"RUSTSEC-2026-0185"
],
"fixed_version": "0.11.15",
"advisory_count": 2,
"oldest_advisory_days": 33
},
{
"name": "body-parser",
"direct": false,
"version": "1.20.5",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.7,
"advisory_ids": [
"GHSA-v422-hmwv-36x6"
],
"fixed_version": "2.3.0",
"advisory_count": 1,
"oldest_advisory_days": 4
},
{
"name": "anyhow",
"direct": false,
"version": "1.0.102",
"severity": "unknown",
"ecosystem": "crates",
"cvss_score": null,
"advisory_ids": [
"RUSTSEC-2026-0190"
],
"fixed_version": "1.0.103",
"advisory_count": 1,
"oldest_advisory_days": 30
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"low": 1,
"high": 1,
"unknown": 1,
"critical": 1
},
"advisory_count": 54,
"affected_count": 4,
"assessed_count": 387,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 122,
"direct_affected_count": 1
},
"ecosystems": [
"maven",
"npm"
],
"dependencies": [
{
"name": "ai.platon.pulsar:browser4-skeleton",
"manifest": "browser4-agent-tools/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-parse",
"manifest": "browser4-agent-tools/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-agentic",
"manifest": "browser4-agent-tools/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:pulsar-ql",
"manifest": "browser4-agent-tools/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "com.github.ben-manes.caffeine:caffeine",
"manifest": "browser4-agent-tools/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-common",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-protocol",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-browser",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-skeleton",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:pulsar-ql-common",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:pulsar-ql",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "io.modelcontextprotocol:kotlin-sdk-core-jvm",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": "0.8.1"
},
{
"name": "io.modelcontextprotocol:kotlin-sdk-server-jvm",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": "0.8.1"
},
{
"name": "io.opentelemetry:opentelemetry-api",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "io.opentelemetry:opentelemetry-sdk",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "io.opentelemetry:opentelemetry-exporter-otlp",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "io.opentelemetry.semconv:opentelemetry-semconv",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "io.micrometer:micrometer-core",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "io.micrometer:micrometer-registry-prometheus",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "jakarta.annotation:jakarta.annotation-api",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.yaml:snakeyaml",
"manifest": "browser4-agentic/pom.xml",
"ecosystem": "maven",
"version_constraint": "2.2"
},
{
"name": "ai.platon.pulsar:pulsar-persist",
"manifest": "browser4-boot/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-skeleton",
"manifest": "browser4-boot/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-protocol",
"manifest": "browser4-boot/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-agentic",
"manifest": "browser4-boot/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:pulsar-ql",
"manifest": "browser4-boot/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.springframework.boot:spring-boot",
"manifest": "browser4-boot/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.springframework.boot:spring-boot-autoconfigure",
"manifest": "browser4-boot/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.springframework.boot:spring-boot-dependencies",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${spring-boot.version}"
},
{
"name": "ai.platon.pulsar:pulsar-bom",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${browser4-base.version}"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-bom",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${kotlin.coroutine.version}"
},
{
"name": "org.jetbrains.kotlin:kotlin-bom",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${kotlin.version}"
},
{
"name": "org.jetbrains.kotlin:kotlin-serialization",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${kotlin.version}"
},
{
"name": "org.apache.tika:tika-core",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${tika.version}"
},
{
"name": "org.apache.tika:tika-parser-html-module",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${tika.version}"
},
{
"name": "org.apache.tika:tika-parsers",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${tika.version}"
},
{
"name": "dev.langchain4j:langchain4j-bom",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${langchain4j.version}"
},
{
"name": "commons-io:commons-io",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${commons-io.version}"
},
{
"name": "org.apache.commons:commons-text",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${commons-text.version}"
},
{
"name": "org.apache.commons:commons-math3",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${commons-math3.version}"
},
{
"name": "org.apache.commons:commons-collections4",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${commons-collections4.version}"
},
{
"name": "commons-logging:commons-logging",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${commons-logging.version}"
},
{
"name": "org.apache.commons:commons-compress",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${commons-compress.version}"
},
{
"name": "org.apache.commons:commons-numbers-bom",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${commons-numbers-bom.version}"
},
{
"name": "org.apache.poi:poi",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${poi.version}"
},
{
"name": "org.apache.poi:poi-ooxml",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${poi-ooxml.version}"
},
{
"name": "com.google.guava:guava",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${guava.version}"
},
{
"name": "org.apache.httpcomponents:httpcore",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${httptrove4j-core.version}"
},
{
"name": "org.apache.httpcomponents:httpclient",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${httpclient.version}"
},
{
"name": "io.ktor:ktor-client-core",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${ktor.version}"
},
{
"name": "io.ktor:ktor-client-core-jvm",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${ktor.version}"
},
{
"name": "io.ktor:ktor-client-cio-jvm",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${ktor.version}"
},
{
"name": "io.ktor:ktor-client-websockets",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${ktor.version}"
},
{
"name": "io.ktor:ktor-client-cio",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${ktor.version}"
},
{
"name": "io.ktor:ktor-serialization-kotlinx-json-jvm",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${ktor.version}"
},
{
"name": "com.squareup.okhttp3:okhttp",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "4.12.0"
},
{
"name": "io.modelcontextprotocol:kotlin-sdk",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${mcp-sdk.version}"
},
{
"name": "org.apache.lucene:lucene-core",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${lucene.version}"
},
{
"name": "org.apache.lucene:lucene-analyzers-common",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${lucene.version}"
},
{
"name": "org.apache.lucene:lucene-analyzers-smartcn",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${lucene.version}"
},
{
"name": "org.jgrapht:jgrapht-core",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${jgrapht.version}"
},
{
"name": "org.jgrapht:jgrapht-ext",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${jgrapht.version}"
},
{
"name": "com.beust:jcommander",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${jcommander.version}"
},
{
"name": "com.udojava:EvalEx",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${EvalEx.version}"
},
{
"name": "org.nield:kotlin-statistics",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${kotlin-statistics.version}"
},
{
"name": "com.github.oshi:oshi-core",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${oshi-trove4j-core.version}"
},
{
"name": "io.dropwizard.metrics:metrics-core",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${metrics.version}"
},
{
"name": "io.dropwizard.metrics:metrics-jmx",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${metrics.version}"
},
{
"name": "io.dropwizard.metrics:metrics-json",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${metrics.version}"
},
{
"name": "io.dropwizard.metrics:metrics-graphite",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${metrics.version}"
},
{
"name": "io.opentelemetry.semconv:opentelemetry-semconv",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${opentelemetry.semconv.version}"
},
{
"name": "org.nibor.autolink:autolink",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${autolink.version}"
},
{
"name": "org.perf4j:perf4j",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${perf4j.version}"
},
{
"name": "ai.platon.pulsar:pulsar-h2",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${pulsar-h2.version}"
},
{
"name": "ai.platon.pulsar:pulsar-jsoup",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${pulsar-jsoup.version}"
},
{
"name": "ai.platon.cdt:cdt-kotlin-client",
"manifest": "browser4-dependencies/pom.xml",
"ecosystem": "maven",
"version_constraint": "${cdt-kotlin-client.version}"
},
{
"name": "ai.platon.pulsar:browser4-resources",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-skeleton",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-protocol",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-boot",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-agentic",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:browser4-agent-tools",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:pulsar-ql-common",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "ai.platon.pulsar:pulsar-ql",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "com.google.guava:guava",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "com.github.ben-manes.caffeine:caffeine",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "com.google.code.gson:gson",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "com.fasterxml.jackson.core:jackson-core",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "com.fasterxml.jackson.core:jackson-annotations",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "com.fasterxml.jackson.core:jackson-databind",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.springframework.boot:spring-boot-autoconfigure",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.springframework.boot:spring-boot-starter-web",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.springframework.boot:spring-boot-starter-jetty",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.springframework.boot:spring-boot-starter-webflux",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-reactor",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.springframework.boot:spring-boot-starter-actuator",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "com.fasterxml.jackson.module:jackson-module-kotlin",
"manifest": "browser4-rest/pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.jetbrains.kotlin:kotlin-maven-allopen",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${kotlin.version}"
},
{
"name": "org.jetbrains.kotlin:kotlin-maven-noarg",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${kotlin.version}"
},
{
"name": "ai.platon.pulsar:browser4-dependencies",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-common",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-resources",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-skeleton",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-plugins",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-parse",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-protocol",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-browser",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-agentic",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-agent-tools",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-rest",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-boot",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:browser4-tests-common",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "ai.platon.pulsar:pulsar-it-tests",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": "${project.version}"
},
{
"name": "org.jetbrains.kotlin:kotlin-stdlib",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.jetbrains.kotlin:kotlin-reflect",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": null
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-core",
"manifest": "pom.xml",
"ecosystem": "maven",
"version_constraint": null
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "ai.platon.cdt:cdt-kotlin-client",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.cdt:cdt-kotlin-client",
"direct": true,
"version": "4.8.0",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-agent-tools",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-agent-tools",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-agentic",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-agentic",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-boot",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-boot",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-browser",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-browser",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-common",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-common",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-dependencies",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-parse",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-parse",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-plugins",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-protocol",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-protocol",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-resources",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-resources",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-rest",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-rest",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-skeleton",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-skeleton",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-tests-common",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:browser4-tests-common",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-bom",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-bom",
"direct": true,
"version": "4.8.5",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-h2",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-h2",
"direct": true,
"version": "1.4.197",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-it-tests",
"direct": true,
"version": "4.11.22-SNAPSHOT",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-jsoup",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-jsoup",
"direct": true,
"version": "1.14.3",
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-persist",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-ql",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-ql-common",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.beust:jcommander",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.beust:jcommander",
"direct": true,
"version": "1.82",
"ecosystem": "maven"
},
{
"name": "com.fasterxml.jackson.core:jackson-annotations",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.fasterxml.jackson.core:jackson-core",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.fasterxml.jackson.core:jackson-databind",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.fasterxml.jackson.core:jackson-databind",
"direct": true,
"version": "2.9.9.3",
"ecosystem": "maven"
},
{
"name": "com.fasterxml.jackson.module:jackson-module-kotlin",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.github.ben-manes.caffeine:caffeine",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.github.oshi:oshi-core",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.github.oshi:oshi-core",
"direct": true,
"version": "6.6.6",
"ecosystem": "maven"
},
{
"name": "com.google.code.gson:gson",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.google.guava:guava",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.google.guava:guava",
"direct": true,
"version": "33.2.1-jre",
"ecosystem": "maven"
},
{
"name": "com.squareup.okhttp3:okhttp",
"direct": true,
"version": "4.12.0",
"ecosystem": "maven"
},
{
"name": "com.udojava:EvalEx",
"direct": true,
"version": "2.0",
"ecosystem": "maven"
},
{
"name": "commons-io:commons-io",
"direct": true,
"version": "2.16.1",
"ecosystem": "maven"
},
{
"name": "commons-logging:commons-logging",
"direct": true,
"version": "1.3.2",
"ecosystem": "maven"
},
{
"name": "dev.langchain4j:langchain4j-bom",
"direct": true,
"version": "1.5.0",
"ecosystem": "maven"
},
{
"name": "io.dropwizard.metrics:metrics-core",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.dropwizard.metrics:metrics-core",
"direct": true,
"version": "4.2.12",
"ecosystem": "maven"
},
{
"name": "io.dropwizard.metrics:metrics-graphite",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.dropwizard.metrics:metrics-graphite",
"direct": true,
"version": "4.2.12",
"ecosystem": "maven"
},
{
"name": "io.dropwizard.metrics:metrics-jmx",
"direct": true,
"version": "4.2.12",
"ecosystem": "maven"
},
{
"name": "io.dropwizard.metrics:metrics-json",
"direct": true,
"version": "4.2.12",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-cio",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-cio",
"direct": true,
"version": "3.2.3",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-cio-jvm",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-cio-jvm",
"direct": true,
"version": "3.2.3",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-core",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-core",
"direct": true,
"version": "3.2.3",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-core-jvm",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-core-jvm",
"direct": true,
"version": "3.2.3",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-websockets",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-websockets",
"direct": true,
"version": "3.2.3",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-serialization-kotlinx-json-jvm",
"direct": true,
"version": "3.2.3",
"ecosystem": "maven"
},
{
"name": "io.micrometer:micrometer-core",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.micrometer:micrometer-registry-prometheus",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.modelcontextprotocol:kotlin-sdk",
"direct": true,
"version": "0.8.1",
"ecosystem": "maven"
},
{
"name": "io.modelcontextprotocol:kotlin-sdk-core-jvm",
"direct": true,
"version": "0.8.1",
"ecosystem": "maven"
},
{
"name": "io.modelcontextprotocol:kotlin-sdk-server-jvm",
"direct": true,
"version": "0.8.1",
"ecosystem": "maven"
},
{
"name": "io.opentelemetry.semconv:opentelemetry-semconv",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.opentelemetry.semconv:opentelemetry-semconv",
"direct": true,
"version": "1.37.0",
"ecosystem": "maven"
},
{
"name": "io.opentelemetry:opentelemetry-api",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.opentelemetry:opentelemetry-exporter-otlp",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.opentelemetry:opentelemetry-sdk",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "jakarta.annotation:jakarta.annotation-api",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.commons:commons-collections4",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.commons:commons-collections4",
"direct": true,
"version": "4.4",
"ecosystem": "maven"
},
{
"name": "org.apache.commons:commons-compress",
"direct": true,
"version": "1.26.2",
"ecosystem": "maven"
},
{
"name": "org.apache.commons:commons-math3",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.commons:commons-math3",
"direct": true,
"version": "3.6.1",
"ecosystem": "maven"
},
{
"name": "org.apache.commons:commons-numbers-bom",
"direct": true,
"version": "1.1",
"ecosystem": "maven"
},
{
"name": "org.apache.commons:commons-text",
"direct": true,
"version": "1.11.0",
"ecosystem": "maven"
},
{
"name": "org.apache.httpcomponents:httpclient",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.httpcomponents:httpclient",
"direct": true,
"version": "4.5.13",
"ecosystem": "maven"
},
{
"name": "org.apache.httpcomponents:httpcore",
"direct": true,
"version": "4.4.15",
"ecosystem": "maven"
},
{
"name": "org.apache.lucene:lucene-analyzers-common",
"direct": true,
"version": "7.3.1",
"ecosystem": "maven"
},
{
"name": "org.apache.lucene:lucene-analyzers-smartcn",
"direct": true,
"version": "7.3.1",
"ecosystem": "maven"
},
{
"name": "org.apache.lucene:lucene-core",
"direct": true,
"version": "7.3.1",
"ecosystem": "maven"
},
{
"name": "org.apache.poi:poi",
"direct": true,
"version": "5.3.0",
"ecosystem": "maven"
},
{
"name": "org.apache.poi:poi-ooxml",
"direct": true,
"version": "5.4.0",
"ecosystem": "maven"
},
{
"name": "org.apache.tika:tika-core",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.tika:tika-core",
"direct": true,
"version": "3.2.2",
"ecosystem": "maven"
},
{
"name": "org.apache.tika:tika-parser-html-module",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.tika:tika-parser-html-module",
"direct": true,
"version": "3.2.2",
"ecosystem": "maven"
},
{
"name": "org.apache.tika:tika-parsers",
"direct": true,
"version": "3.2.2",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-bom",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-maven-allopen",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-maven-noarg",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-reflect",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-serialization",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-stdlib",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-bom",
"direct": true,
"version": "1.10.2",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-core",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-reactor",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jgrapht:jgrapht-core",
"direct": true,
"version": "1.0.1",
"ecosystem": "maven"
},
{
"name": "org.jgrapht:jgrapht-ext",
"direct": true,
"version": "1.0.1",
"ecosystem": "maven"
},
{
"name": "org.nibor.autolink:autolink",
"direct": true,
"version": "0.11.0",
"ecosystem": "maven"
},
{
"name": "org.nield:kotlin-statistics",
"direct": true,
"version": "1.2.1",
"ecosystem": "maven"
},
{
"name": "org.perf4j:perf4j",
"direct": true,
"version": "0.9.16",
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-autoconfigure",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-dependencies",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-dependencies",
"direct": true,
"version": "4.0.6",
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-starter-actuator",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-starter-jetty",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-starter-web",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-starter-webflux",
"direct": true,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.yaml:snakeyaml",
"direct": true,
"version": "2.2",
"ecosystem": "maven"
},
{
"name": "adler2",
"direct": false,
"version": "2.0.1",
"ecosystem": "crates"
},
{
"name": "aho-corasick",
"direct": false,
"version": "1.1.4",
"ecosystem": "crates"
},
{
"name": "android_system_properties",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "anyhow",
"direct": false,
"version": "1.0.102",
"ecosystem": "crates"
},
{
"name": "arbitrary",
"direct": false,
"version": "1.4.2",
"ecosystem": "crates"
},
{
"name": "atomic-waker",
"direct": false,
"version": "1.1.2",
"ecosystem": "crates"
},
{
"name": "autocfg",
"direct": false,
"version": "1.5.0",
"ecosystem": "crates"
},
{
"name": "aws-lc-rs",
"direct": false,
"version": "1.16.3",
"ecosystem": "crates"
},
{
"name": "aws-lc-sys",
"direct": false,
"version": "0.40.0",
"ecosystem": "crates"
},
{
"name": "base64",
"direct": false,
"version": "0.22.1",
"ecosystem": "crates"
},
{
"name": "bitflags",
"direct": false,
"version": "2.11.1",
"ecosystem": "crates"
},
{
"name": "block-buffer",
"direct": false,
"version": "0.10.4",
"ecosystem": "crates"
},
{
"name": "bumpalo",
"direct": false,
"version": "3.20.2",
"ecosystem": "crates"
},
{
"name": "bytes",
"direct": false,
"version": "1.11.1",
"ecosystem": "crates"
},
{
"name": "cc",
"direct": false,
"version": "1.2.62",
"ecosystem": "crates"
},
{
"name": "cfg-if",
"direct": false,
"version": "1.0.4",
"ecosystem": "crates"
},
{
"name": "cfg_aliases",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "chrono",
"direct": false,
"version": "0.4.44",
"ecosystem": "crates"
},
{
"name": "cmake",
"direct": false,
"version": "0.1.58",
"ecosystem": "crates"
},
{
"name": "combine",
"direct": false,
"version": "4.6.7",
"ecosystem": "crates"
},
{
"name": "core-foundation",
"direct": false,
"version": "0.10.1",
"ecosystem": "crates"
},
{
"name": "core-foundation-sys",
"direct": false,
"version": "0.8.7",
"ecosystem": "crates"
},
{
"name": "cpufeatures",
"direct": false,
"version": "0.2.17",
"ecosystem": "crates"
},
{
"name": "crc32fast",
"direct": false,
"version": "1.5.0",
"ecosystem": "crates"
},
{
"name": "crossbeam-utils",
"direct": false,
"version": "0.8.21",
"ecosystem": "crates"
},
{
"name": "crypto-common",
"direct": false,
"version": "0.1.7",
"ecosystem": "crates"
},
{
"name": "derive_arbitrary",
"direct": false,
"version": "1.4.2",
"ecosystem": "crates"
},
{
"name": "digest",
"direct": false,
"version": "0.10.7",
"ecosystem": "crates"
},
{
"name": "dirs",
"direct": false,
"version": "6.0.0",
"ecosystem": "crates"
},
{
"name": "dirs-sys",
"direct": false,
"version": "0.5.0",
"ecosystem": "crates"
},
{
"name": "displaydoc",
"direct": false,
"version": "0.2.5",
"ecosystem": "crates"
},
{
"name": "dunce",
"direct": false,
"version": "1.0.5",
"ecosystem": "crates"
},
{
"name": "equivalent",
"direct": false,
"version": "1.0.2",
"ecosystem": "crates"
},
{
"name": "errno",
"direct": false,
"version": "0.3.14",
"ecosystem": "crates"
},
{
"name": "fastrand",
"direct": false,
"version": "2.4.1",
"ecosystem": "crates"
},
{
"name": "filetime",
"direct": false,
"version": "0.2.29",
"ecosystem": "crates"
},
{
"name": "find-msvc-tools",
"direct": false,
"version": "0.1.9",
"ecosystem": "crates"
},
{
"name": "flate2",
"direct": false,
"version": "1.1.9",
"ecosystem": "crates"
},
{
"name": "foldhash",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "form_urlencoded",
"direct": false,
"version": "1.2.2",
"ecosystem": "crates"
},
{
"name": "fs_extra",
"direct": false,
"version": "1.3.0",
"ecosystem": "crates"
},
{
"name": "futures-channel",
"direct": false,
"version": "0.3.32",
"ecosystem": "crates"
},
{
"name": "futures-core",
"direct": false,
"version": "0.3.32",
"ecosystem": "crates"
},
{
"name": "futures-io",
"direct": false,
"version": "0.3.32",
"ecosystem": "crates"
},
{
"name": "futures-sink",
"direct": false,
"version": "0.3.32",
"ecosystem": "crates"
},
{
"name": "futures-task",
"direct": false,
"version": "0.3.32",
"ecosystem": "crates"
},
{
"name": "futures-util",
"direct": false,
"version": "0.3.32",
"ecosystem": "crates"
},
{
"name": "generic-array",
"direct": false,
"version": "0.14.7",
"ecosystem": "crates"
},
{
"name": "getrandom",
"direct": false,
"version": "0.2.17",
"ecosystem": "crates"
},
{
"name": "getrandom",
"direct": false,
"version": "0.3.4",
"ecosystem": "crates"
},
{
"name": "getrandom",
"direct": false,
"version": "0.4.2",
"ecosystem": "crates"
},
{
"name": "hashbrown",
"direct": false,
"version": "0.15.5",
"ecosystem": "crates"
},
{
"name": "hashbrown",
"direct": false,
"version": "0.17.1",
"ecosystem": "crates"
},
{
"name": "heck",
"direct": false,
"version": "0.5.0",
"ecosystem": "crates"
},
{
"name": "http",
"direct": false,
"version": "1.4.0",
"ecosystem": "crates"
},
{
"name": "http-body",
"direct": false,
"version": "1.0.1",
"ecosystem": "crates"
},
{
"name": "http-body-util",
"direct": false,
"version": "0.1.3",
"ecosystem": "crates"
},
{
"name": "httparse",
"direct": false,
"version": "1.10.1",
"ecosystem": "crates"
},
{
"name": "hyper",
"direct": false,
"version": "1.9.0",
"ecosystem": "crates"
},
{
"name": "hyper-rustls",
"direct": false,
"version": "0.27.9",
"ecosystem": "crates"
},
{
"name": "hyper-util",
"direct": false,
"version": "0.1.20",
"ecosystem": "crates"
},
{
"name": "iana-time-zone",
"direct": false,
"version": "0.1.65",
"ecosystem": "crates"
},
{
"name": "iana-time-zone-haiku",
"direct": false,
"version": "0.1.2",
"ecosystem": "crates"
},
{
"name": "icu_collections",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_locale_core",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_normalizer",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_normalizer_data",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_properties",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_properties_data",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "icu_provider",
"direct": false,
"version": "2.2.0",
"ecosystem": "crates"
},
{
"name": "id-arena",
"direct": false,
"version": "2.3.0",
"ecosystem": "crates"
},
{
"name": "idna",
"direct": false,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "idna_adapter",
"direct": false,
"version": "1.2.2",
"ecosystem": "crates"
},
{
"name": "indexmap",
"direct": false,
"version": "2.14.0",
"ecosystem": "crates"
},
{
"name": "ipnet",
"direct": false,
"version": "2.12.0",
"ecosystem": "crates"
},
{
"name": "itoa",
"direct": false,
"version": "1.0.18",
"ecosystem": "crates"
},
{
"name": "jni",
"direct": false,
"version": "0.22.4",
"ecosystem": "crates"
},
{
"name": "jni-macros",
"direct": false,
"version": "0.22.4",
"ecosystem": "crates"
},
{
"name": "jni-sys",
"direct": false,
"version": "0.4.1",
"ecosystem": "crates"
},
{
"name": "jni-sys-macros",
"direct": false,
"version": "0.4.1",
"ecosystem": "crates"
},
{
"name": "jobserver",
"direct": false,
"version": "0.1.34",
"ecosystem": "crates"
},
{
"name": "js-sys",
"direct": false,
"version": "0.3.91",
"ecosystem": "crates"
},
{
"name": "leb128fmt",
"direct": false,
"version": "0.1.0",
"ecosystem": "crates"
},
{
"name": "libc",
"direct": false,
"version": "0.2.186",
"ecosystem": "crates"
},
{
"name": "libredox",
"direct": false,
"version": "0.1.16",
"ecosystem": "crates"
},
{
"name": "linux-raw-sys",
"direct": false,
"version": "0.12.1",
"ecosystem": "crates"
},
{
"name": "litemap",
"direct": false,
"version": "0.8.2",
"ecosystem": "crates"
},
{
"name": "log",
"direct": false,
"version": "0.4.29",
"ecosystem": "crates"
},
{
"name": "lru-slab",
"direct": false,
"version": "0.1.2",
"ecosystem": "crates"
},
{
"name": "memchr",
"direct": false,
"version": "2.8.0",
"ecosystem": "crates"
},
{
"name": "miniz_oxide",
"direct": false,
"version": "0.8.9",
"ecosystem": "crates"
},
{
"name": "mio",
"direct": false,
"version": "1.2.0",
"ecosystem": "crates"
},
{
"name": "num-traits",
"direct": false,
"version": "0.2.19",
"ecosystem": "crates"
},
{
"name": "once_cell",
"direct": false,
"version": "1.21.4",
"ecosystem": "crates"
},
{
"name": "openssl-probe",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "option-ext",
"direct": false,
"version": "0.2.0",
"ecosystem": "crates"
},
{
"name": "percent-encoding",
"direct": false,
"version": "2.3.2",
"ecosystem": "crates"
},
{
"name": "pin-project-lite",
"direct": false,
"version": "0.2.17",
"ecosystem": "crates"
},
{
"name": "potential_utf",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "ppv-lite86",
"direct": false,
"version": "0.2.21",
"ecosystem": "crates"
},
{
"name": "prettyplease",
"direct": false,
"version": "0.2.37",
"ecosystem": "crates"
},
{
"name": "proc-macro2",
"direct": false,
"version": "1.0.106",
"ecosystem": "crates"
},
{
"name": "quinn",
"direct": false,
"version": "0.11.9",
"ecosystem": "crates"
},
{
"name": "quinn-proto",
"direct": false,
"version": "0.11.14",
"ecosystem": "crates"
},
{
"name": "quinn-udp",
"direct": false,
"version": "0.5.14",
"ecosystem": "crates"
},
{
"name": "quote",
"direct": false,
"version": "1.0.45",
"ecosystem": "crates"
},
{
"name": "r-efi",
"direct": false,
"version": "5.3.0",
"ecosystem": "crates"
},
{
"name": "r-efi",
"direct": false,
"version": "6.0.0",
"ecosystem": "crates"
},
{
"name": "rand",
"direct": false,
"version": "0.9.4",
"ecosystem": "crates"
},
{
"name": "rand_chacha",
"direct": false,
"version": "0.9.0",
"ecosystem": "crates"
},
{
"name": "rand_core",
"direct": false,
"version": "0.9.5",
"ecosystem": "crates"
},
{
"name": "redox_users",
"direct": false,
"version": "0.5.2",
"ecosystem": "crates"
},
{
"name": "regex",
"direct": false,
"version": "1.12.3",
"ecosystem": "crates"
},
{
"name": "regex-automata",
"direct": false,
"version": "0.4.14",
"ecosystem": "crates"
},
{
"name": "regex-syntax",
"direct": false,
"version": "0.8.10",
"ecosystem": "crates"
},
{
"name": "reqwest",
"direct": false,
"version": "0.13.3",
"ecosystem": "crates"
},
{
"name": "ring",
"direct": false,
"version": "0.17.14",
"ecosystem": "crates"
},
{
"name": "rustc-hash",
"direct": false,
"version": "2.1.2",
"ecosystem": "crates"
},
{
"name": "rustc_version",
"direct": false,
"version": "0.4.1",
"ecosystem": "crates"
},
{
"name": "rustix",
"direct": false,
"version": "1.1.4",
"ecosystem": "crates"
},
{
"name": "rustls",
"direct": false,
"version": "0.23.40",
"ecosystem": "crates"
},
{
"name": "rustls-native-certs",
"direct": false,
"version": "0.8.3",
"ecosystem": "crates"
},
{
"name": "rustls-pki-types",
"direct": false,
"version": "1.14.1",
"ecosystem": "crates"
},
{
"name": "rustls-platform-verifier",
"direct": false,
"version": "0.7.0",
"ecosystem": "crates"
},
{
"name": "rustls-platform-verifier-android",
"direct": false,
"version": "0.1.1",
"ecosystem": "crates"
},
{
"name": "rustls-webpki",
"direct": false,
"version": "0.103.13",
"ecosystem": "crates"
},
{
"name": "rustversion",
"direct": false,
"version": "1.0.22",
"ecosystem": "crates"
},
{
"name": "same-file",
"direct": false,
"version": "1.0.6",
"ecosystem": "crates"
},
{
"name": "schannel",
"direct": false,
"version": "0.1.29",
"ecosystem": "crates"
},
{
"name": "security-framework",
"direct": false,
"version": "3.7.0",
"ecosystem": "crates"
},
{
"name": "security-framework-sys",
"direct": false,
"version": "2.17.0",
"ecosystem": "crates"
},
{
"name": "semver",
"direct": false,
"version": "1.0.28",
"ecosystem": "crates"
},
{
"name": "serde",
"direct": false,
"version": "1.0.228",
"ecosystem": "crates"
},
{
"name": "serde_core",
"direct": false,
"version": "1.0.228",
"ecosystem": "crates"
},
{
"name": "serde_derive",
"direct": false,
"version": "1.0.228",
"ecosystem": "crates"
},
{
"name": "serde_json",
"direct": false,
"version": "1.0.149",
"ecosystem": "crates"
},
{
"name": "sha2",
"direct": false,
"version": "0.10.9",
"ecosystem": "crates"
},
{
"name": "shlex",
"direct": false,
"version": "1.3.0",
"ecosystem": "crates"
},
{
"name": "signal-hook-registry",
"direct": false,
"version": "1.4.8",
"ecosystem": "crates"
},
{
"name": "simd-adler32",
"direct": false,
"version": "0.3.9",
"ecosystem": "crates"
},
{
"name": "simd_cesu8",
"direct": false,
"version": "1.1.1",
"ecosystem": "crates"
},
{
"name": "simdutf8",
"direct": false,
"version": "0.1.5",
"ecosystem": "crates"
},
{
"name": "slab",
"direct": false,
"version": "0.4.12",
"ecosystem": "crates"
},
{
"name": "smallvec",
"direct": false,
"version": "1.15.1",
"ecosystem": "crates"
},
{
"name": "socket2",
"direct": false,
"version": "0.6.3",
"ecosystem": "crates"
},
{
"name": "stable_deref_trait",
"direct": false,
"version": "1.2.1",
"ecosystem": "crates"
},
{
"name": "subtle",
"direct": false,
"version": "2.6.1",
"ecosystem": "crates"
},
{
"name": "syn",
"direct": false,
"version": "2.0.117",
"ecosystem": "crates"
},
{
"name": "sync_wrapper",
"direct": false,
"version": "1.0.2",
"ecosystem": "crates"
},
{
"name": "synstructure",
"direct": false,
"version": "0.13.2",
"ecosystem": "crates"
},
{
"name": "tar",
"direct": false,
"version": "0.4.46",
"ecosystem": "crates"
},
{
"name": "tempfile",
"direct": false,
"version": "3.27.0",
"ecosystem": "crates"
},
{
"name": "thiserror",
"direct": false,
"version": "2.0.18",
"ecosystem": "crates"
},
{
"name": "thiserror-impl",
"direct": false,
"version": "2.0.18",
"ecosystem": "crates"
},
{
"name": "tinystr",
"direct": false,
"version": "0.8.3",
"ecosystem": "crates"
},
{
"name": "tinyvec",
"direct": false,
"version": "1.11.0",
"ecosystem": "crates"
},
{
"name": "tinyvec_macros",
"direct": false,
"version": "0.1.1",
"ecosystem": "crates"
},
{
"name": "tokio",
"direct": false,
"version": "1.52.3",
"ecosystem": "crates"
},
{
"name": "tokio-macros",
"direct": false,
"version": "2.7.0",
"ecosystem": "crates"
},
{
"name": "tokio-rustls",
"direct": false,
"version": "0.26.4",
"ecosystem": "crates"
},
{
"name": "tower",
"direct": false,
"version": "0.5.3",
"ecosystem": "crates"
},
{
"name": "tower-http",
"direct": false,
"version": "0.6.10",
"ecosystem": "crates"
},
{
"name": "tower-layer",
"direct": false,
"version": "0.3.3",
"ecosystem": "crates"
},
{
"name": "tower-service",
"direct": false,
"version": "0.3.3",
"ecosystem": "crates"
},
{
"name": "tracing",
"direct": false,
"version": "0.1.44",
"ecosystem": "crates"
},
{
"name": "tracing-core",
"direct": false,
"version": "0.1.36",
"ecosystem": "crates"
},
{
"name": "try-lock",
"direct": false,
"version": "0.2.5",
"ecosystem": "crates"
},
{
"name": "typenum",
"direct": false,
"version": "1.20.1",
"ecosystem": "crates"
},
{
"name": "unicode-ident",
"direct": false,
"version": "1.0.24",
"ecosystem": "crates"
},
{
"name": "unicode-xid",
"direct": false,
"version": "0.2.6",
"ecosystem": "crates"
},
{
"name": "untrusted",
"direct": false,
"version": "0.9.0",
"ecosystem": "crates"
},
{
"name": "url",
"direct": false,
"version": "2.5.8",
"ecosystem": "crates"
},
{
"name": "urlencoding",
"direct": false,
"version": "2.1.3",
"ecosystem": "crates"
},
{
"name": "utf8_iter",
"direct": false,
"version": "1.0.4",
"ecosystem": "crates"
},
{
"name": "version_check",
"direct": false,
"version": "0.9.5",
"ecosystem": "crates"
},
{
"name": "walkdir",
"direct": false,
"version": "2.5.0",
"ecosystem": "crates"
},
{
"name": "want",
"direct": false,
"version": "0.3.1",
"ecosystem": "crates"
},
{
"name": "wasi",
"direct": false,
"version": "0.11.1+wasi-snapshot-preview1",
"ecosystem": "crates"
},
{
"name": "wasip2",
"direct": false,
"version": "1.0.3+wasi-0.2.9",
"ecosystem": "crates"
},
{
"name": "wasip3",
"direct": false,
"version": "0.4.0+wasi-0.3.0-rc-2026-01-06",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen",
"direct": false,
"version": "0.2.114",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-futures",
"direct": false,
"version": "0.4.64",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-macro",
"direct": false,
"version": "0.2.114",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-macro-support",
"direct": false,
"version": "0.2.114",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-shared",
"direct": false,
"version": "0.2.114",
"ecosystem": "crates"
},
{
"name": "wasm-encoder",
"direct": false,
"version": "0.244.0",
"ecosystem": "crates"
},
{
"name": "wasm-metadata",
"direct": false,
"version": "0.244.0",
"ecosystem": "crates"
},
{
"name": "wasmparser",
"direct": false,
"version": "0.244.0",
"ecosystem": "crates"
},
{
"name": "web-sys",
"direct": false,
"version": "0.3.91",
"ecosystem": "crates"
},
{
"name": "web-time",
"direct": false,
"version": "1.1.0",
"ecosystem": "crates"
},
{
"name": "webpki-root-certs",
"direct": false,
"version": "1.0.7",
"ecosystem": "crates"
},
{
"name": "winapi-util",
"direct": false,
"version": "0.1.11",
"ecosystem": "crates"
},
{
"name": "windows-core",
"direct": false,
"version": "0.62.2",
"ecosystem": "crates"
},
{
"name": "windows-implement",
"direct": false,
"version": "0.60.2",
"ecosystem": "crates"
},
{
"name": "windows-interface",
"direct": false,
"version": "0.59.3",
"ecosystem": "crates"
},
{
"name": "windows-link",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "windows-result",
"direct": false,
"version": "0.4.1",
"ecosystem": "crates"
},
{
"name": "windows-strings",
"direct": false,
"version": "0.5.1",
"ecosystem": "crates"
},
{
"name": "windows-sys",
"direct": false,
"version": "0.52.0",
"ecosystem": "crates"
},
{
"name": "windows-sys",
"direct": false,
"version": "0.60.2",
"ecosystem": "crates"
},
{
"name": "windows-sys",
"direct": false,
"version": "0.61.2",
"ecosystem": "crates"
},
{
"name": "windows-targets",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows-targets",
"direct": false,
"version": "0.53.5",
"ecosystem": "crates"
},
{
"name": "windows_aarch64_gnullvm",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_aarch64_gnullvm",
"direct": false,
"version": "0.53.1",
"ecosystem": "crates"
},
{
"name": "windows_aarch64_msvc",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_aarch64_msvc",
"direct": false,
"version": "0.53.1",
"ecosystem": "crates"
},
{
"name": "windows_i686_gnu",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_i686_gnu",
"direct": false,
"version": "0.53.1",
"ecosystem": "crates"
},
{
"name": "windows_i686_gnullvm",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_i686_gnullvm",
"direct": false,
"version": "0.53.1",
"ecosystem": "crates"
},
{
"name": "windows_i686_msvc",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_i686_msvc",
"direct": false,
"version": "0.53.1",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_gnu",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_gnu",
"direct": false,
"version": "0.53.1",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_gnullvm",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_gnullvm",
"direct": false,
"version": "0.53.1",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_msvc",
"direct": false,
"version": "0.52.6",
"ecosystem": "crates"
},
{
"name": "windows_x86_64_msvc",
"direct": false,
"version": "0.53.1",
"ecosystem": "crates"
},
{
"name": "wit-bindgen",
"direct": false,
"version": "0.51.0",
"ecosystem": "crates"
},
{
"name": "wit-bindgen",
"direct": false,
"version": "0.57.1",
"ecosystem": "crates"
},
{
"name": "wit-bindgen-core",
"direct": false,
"version": "0.51.0",
"ecosystem": "crates"
},
{
"name": "wit-bindgen-rust",
"direct": false,
"version": "0.51.0",
"ecosystem": "crates"
},
{
"name": "wit-bindgen-rust-macro",
"direct": false,
"version": "0.51.0",
"ecosystem": "crates"
},
{
"name": "wit-component",
"direct": false,
"version": "0.244.0",
"ecosystem": "crates"
},
{
"name": "wit-parser",
"direct": false,
"version": "0.244.0",
"ecosystem": "crates"
},
{
"name": "writeable",
"direct": false,
"version": "0.6.3",
"ecosystem": "crates"
},
{
"name": "xattr",
"direct": false,
"version": "1.6.1",
"ecosystem": "crates"
},
{
"name": "yoke",
"direct": false,
"version": "0.8.2",
"ecosystem": "crates"
},
{
"name": "yoke-derive",
"direct": false,
"version": "0.8.2",
"ecosystem": "crates"
},
{
"name": "zerocopy",
"direct": false,
"version": "0.8.48",
"ecosystem": "crates"
},
{
"name": "zerocopy-derive",
"direct": false,
"version": "0.8.48",
"ecosystem": "crates"
},
{
"name": "zerofrom",
"direct": false,
"version": "0.1.7",
"ecosystem": "crates"
},
{
"name": "zerofrom-derive",
"direct": false,
"version": "0.1.7",
"ecosystem": "crates"
},
{
"name": "zeroize",
"direct": false,
"version": "1.8.2",
"ecosystem": "crates"
},
{
"name": "zerotrie",
"direct": false,
"version": "0.2.4",
"ecosystem": "crates"
},
{
"name": "zerovec",
"direct": false,
"version": "0.11.6",
"ecosystem": "crates"
},
{
"name": "zerovec-derive",
"direct": false,
"version": "0.11.3",
"ecosystem": "crates"
},
{
"name": "zip",
"direct": false,
"version": "2.4.2",
"ecosystem": "crates"
},
{
"name": "zmij",
"direct": false,
"version": "1.0.21",
"ecosystem": "crates"
},
{
"name": "zopfli",
"direct": false,
"version": "0.8.3",
"ecosystem": "crates"
},
{
"name": "ai.platon.pulsar:pulsar-common",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-dom",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-llm",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "ai.platon.pulsar:pulsar-mapr",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "ch.qos.logback:logback-classic",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.google.code.crawler-commons:crawler-commons",
"direct": false,
"version": "0.5",
"ecosystem": "maven"
},
{
"name": "com.ninja-squad:springmockk",
"direct": false,
"version": "4.0.2",
"ecosystem": "maven"
},
{
"name": "commons-codec:commons-codec",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "dev.langchain4j:langchain4j-open-ai",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.github.git-commit-id:git-commit-id-maven-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.mockk:mockk",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.mockk:mockk",
"direct": false,
"version": "1.14.6",
"ecosystem": "maven"
},
{
"name": "io.mockk:mockk-jvm",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.mockk:mockk-jvm",
"direct": false,
"version": "1.14.6",
"ecosystem": "maven"
},
{
"name": "io.modelcontextprotocol:kotlin-sdk-client-jvm",
"direct": false,
"version": "0.8.1",
"ecosystem": "maven"
},
{
"name": "javax.servlet:javax.servlet-api",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "javax.servlet:jstl",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "junit:junit",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "net.sourceforge.nekohtml:nekohtml",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.commons:commons-lang3",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.httpcomponents.client5:httpclient5",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.logging.log4j:log4j-core",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-compiler-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-dependency-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-gpg-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-jar-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-surefire-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.tomcat.embed:tomcat-embed-jasper",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.aspectj:aspectjweaver",
"direct": false,
"version": "1.9.1",
"ecosystem": "maven"
},
{
"name": "org.codehaus.mojo:exec-maven-plugin",
"direct": false,
"version": "3.5.0",
"ecosystem": "maven"
},
{
"name": "org.hamcrest:hamcrest-library",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.hibernate:hibernate-entitymanager",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jacoco:jacoco-maven-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.javassist:javassist",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.javassist:javassist",
"direct": false,
"version": "3.31.0-GA",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-maven-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-test-junit5",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-serialization-json",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.junit.jupiter:junit-jupiter-api",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.junit.jupiter:junit-jupiter-engine",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.junit.jupiter:junit-jupiter-params",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.mockito.kotlin:mockito-kotlin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.mockito.kotlin:mockito-kotlin",
"direct": false,
"version": "5.4.0",
"ecosystem": "maven"
},
{
"name": "org.mockito:mockito-core",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.mockito:mockito-junit-jupiter",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.slf4j:slf4j-api",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.sonatype.central:central-publishing-maven-plugin",
"direct": false,
"version": "0.9.0",
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-devtools",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-maven-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-maven-plugin",
"direct": false,
"version": "3.4.1",
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-starter-restclient-test",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-starter-test",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-starter-tomcat",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-test",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.data:spring-data-commons",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.data:spring-data-jpa",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-aop",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-beans",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-context",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-core",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-expression",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-jdbc",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-orm",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-test",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-tx",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-web",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-webmvc",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "xml-apis:xml-apis",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "accepts",
"direct": false,
"version": "1.3.8",
"ecosystem": "npm"
},
{
"name": "array-flatten",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "body-parser",
"direct": false,
"version": "1.20.5",
"ecosystem": "npm"
},
{
"name": "browser4-cli",
"direct": false,
"version": "0.1.5",
"ecosystem": "npm"
},
{
"name": "bytes",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "call-bind-apply-helpers",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "call-bound",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "content-disposition",
"direct": false,
"version": "0.5.4",
"ecosystem": "npm"
},
{
"name": "content-type",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "cookie",
"direct": false,
"version": "0.7.2",
"ecosystem": "npm"
},
{
"name": "cookie-signature",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "cors",
"direct": false,
"version": "2.8.6",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "2.6.9",
"ecosystem": "npm"
},
{
"name": "depd",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "destroy",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "dunder-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "ee-first",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "encodeurl",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "es-define-property",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "es-errors",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-object-atoms",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "escape-html",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "etag",
"direct": false,
"version": "1.8.1",
"ecosystem": "npm"
},
{
"name": "express",
"direct": false,
"version": "4.22.2",
"ecosystem": "npm"
},
{
"name": "finalhandler",
"direct": false,
"version": "1.3.2",
"ecosystem": "npm"
},
{
"name": "forwarded",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "fresh",
"direct": false,
"version": "0.5.2",
"ecosystem": "npm"
},
{
"name": "function-bind",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "get-intrinsic",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "get-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "gopd",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "has-symbols",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "hasown",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "http-errors",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.4.24",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "ipaddr.js",
"direct": false,
"version": "1.9.1",
"ecosystem": "npm"
},
{
"name": "math-intrinsics",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "media-typer",
"direct": false,
"version": "0.3.0",
"ecosystem": "npm"
},
{
"name": "merge-descriptors",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "methods",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "mime",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.52.0",
"ecosystem": "npm"
},
{
"name": "mime-types",
"direct": false,
"version": "2.1.35",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "negotiator",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "object-assign",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "object-inspect",
"direct": false,
"version": "1.13.4",
"ecosystem": "npm"
},
{
"name": "on-finished",
"direct": false,
"version": "2.4.1",
"ecosystem": "npm"
},
{
"name": "parseurl",
"direct": false,
"version": "1.3.3",
"ecosystem": "npm"
},
{
"name": "path-to-regexp",
"direct": false,
"version": "0.1.13",
"ecosystem": "npm"
},
{
"name": "proxy-addr",
"direct": false,
"version": "2.0.7",
"ecosystem": "npm"
},
{
"name": "qs",
"direct": false,
"version": "6.15.2",
"ecosystem": "npm"
},
{
"name": "range-parser",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "raw-body",
"direct": false,
"version": "2.5.3",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "safer-buffer",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "send",
"direct": false,
"version": "0.19.2",
"ecosystem": "npm"
},
{
"name": "serve-static",
"direct": false,
"version": "1.16.3",
"ecosystem": "npm"
},
{
"name": "setprototypeof",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "side-channel",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "side-channel-list",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "side-channel-map",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "side-channel-weakmap",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "statuses",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "toidentifier",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "type-is",
"direct": false,
"version": "1.6.18",
"ecosystem": "npm"
},
{
"name": "unpipe",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "utils-merge",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "vary",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "anthropic",
"direct": false,
"version": null,
"ecosystem": "pypi"
},
{
"name": "mcp",
"direct": false,
"version": null,
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 509,
"direct_count": 125,
"indirect_count": 384
}
},
"maintainership": {
"issues": {
"open_prs": 3,
"merged_prs": 184,
"open_issues": 0,
"closed_ratio": 1,
"closed_issues": 210,
"closed_unmerged_prs": 92
},
"bus_factor": 1,
"bot_contributors": 2,
"top_contributors": [
{
"type": "User",
"login": "insidegalaxyeye",
"commits": 5134,
"avatar_url": "https://avatars.githubusercontent.com/u/4785531?v=4"
},
{
"type": "User",
"login": "galaxyeye",
"commits": 1587,
"avatar_url": "https://avatars.githubusercontent.com/u/1701451?v=4"
},
{
"type": "User",
"login": "platonai",
"commits": 1250,
"avatar_url": "https://avatars.githubusercontent.com/u/37785921?v=4"
},
{
"type": "User",
"login": "qodana-bot",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/139879315?v=4"
}
],
"contributors_sampled": 4,
"top_contributor_share": 0.644
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"ci.yml",
"maintenance.yml",
"nightly-cli.yml",
"nightly.yml",
"release-cli.yml",
"release.yml",
"sync-to-oss.yml",
"test-runtime-bundle.yml",
"test-smoke-cross-platform.yml"
],
"has_docs_dir": true,
"linter_configs": [
".eslintrc"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"Cargo.lock",
"package-lock.json",
"pnpm-lock.yaml"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 9,
"reason": "binaries present in source code",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": null,
"reason": "no pull request found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/30 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 10,
"reason": "update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 3,
"reason": "dependency not pinned by hash detected -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 7,
"reason": "3 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "2c3ce18394293ed10a6727944414c1c7f959f49c",
"ran_at": "2026-07-25T14:21:41Z",
"aggregate_score": 4.6,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-25T08:39:03Z",
"oldest_open_prs": [
{
"number": 49,
"created_at": "2023-09-29T22:15:08Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 403,
"created_at": "2026-04-19T21:20:49Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 404,
"created_at": "2026-04-19T21:20:56Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-06-23T07:05:52Z",
"ci_last_conclusion": "FAILURE",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/platonai/Browser4",
"host": "github.com",
"name": "Browser4",
"owner": "platonai"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"security": 47,
"vitality": 93,
"community": 62,
"governance": 61,
"engineering": 93
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 93,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "excellent",
"name": "Development activity",
"note": null,
"notes": [],
"value": 95,
"inputs": {
"commits_last_year": 5042,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 45
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "45/52 weeks with commits",
"points": 31.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 45
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "5042 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 5042
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 39,
"latest_release_tag": "v4.12.0-rc.3",
"releases_from_tags": false,
"days_since_latest_release": 5,
"mean_days_between_releases": 2.4
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "39 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 39
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~2.4 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 2.4
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 11,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 11 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 11
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 62,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "good",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"forks": 145,
"stars": 1093,
"watchers": 19,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "1,093 stars",
"points": 49.3,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 1093
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "145 forks",
"points": 18,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 145
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "19 watchers",
"points": 7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 19
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 59,
"inputs": {
"packages": [
"browser4-cli"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 3322
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "3,322 downloads/month across npm",
"points": 47,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 3322,
"ecosystems": "npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 61,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 25,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 4,
"top_contributor_share": 0.644
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 64% of commits",
"points": 8,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 64
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "4 contributors",
"points": 5.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 4
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 72,
"inputs": {
"merged_prs": 184,
"open_issues": 0,
"closed_issues": 210,
"issue_closed_ratio": 1,
"closed_unmerged_prs": 92
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 46.8,
"status": "met",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "184/276 decided PRs merged",
"points": 25.5,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 184,
"decided": 276
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 62,
"inputs": {
"followers": 154,
"owner_type": "User",
"is_verified": null,
"owner_login": "platonai",
"public_repos": 42,
"account_age_days": 3043
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "154 followers of platonai",
"points": 15.7,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 154,
"login": "platonai"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "42 public repos, account ~8 yr old",
"points": 23.9,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 42
}
},
{
"code": "account_age_years",
"params": {
"years": 8
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"browser4-cli"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 11
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 11 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 11
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "33 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 33
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "excellent",
"name": "Engineering Quality",
"value": 93,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 88,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "9 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 9
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".eslintrc",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"agentic-ai",
"agentic-browser",
"ai-browser",
"browser-agent",
"browser-use-agent",
"browser-infra"
],
"has_wiki": true,
"homepage": "https://browser4.io",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://browser4.io",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "6 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 6
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 47,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 46,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 4.6
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "binaries present in source code",
"points": 6.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "update tool detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 3",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "3 existing vulnerabilities detected",
"points": 5.2,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "moderate",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories. Remaining weights renormalized. Matched 387 resolved dependencies against OSV; 122 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 387
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 122
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 53,
"inputs": {
"source": "osv",
"advisories": 54,
"affected_packages": 4,
"assessed_packages": 387,
"unassessed_packages": 122,
"affected_by_severity": "critical 1, high 1, low 1, unknown 1",
"direct_affected_packages": 1
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "1 affected: com.fasterxml.jackson.core:jackson-databind 2.9.9.3 (critical 9.8)",
"points": 7.6,
"status": "partial",
"details": [
{
"code": "advisories_affected",
"params": {
"count": 1,
"packages": "com.fasterxml.jackson.core:jackson-databind 2.9.9.3 (critical 9.8)"
}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "1 advisory-carrying package(s) unaddressed past 90 days; oldest published 2496 days ago",
"points": 32.1,
"status": "partial",
"details": [
{
"code": "advisories_stale",
"params": {
"days": 90,
"count": 1,
"oldest": 2496
}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 387,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 5
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "good",
"name": "AI Readiness",
"value": 81,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.88,
"agent_instruction_files": [
"AGENTS.md",
"skills/browser4-cli/references/agent.md"
],
"agent_instruction_max_bytes": 27338
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md, skills/browser4-cli/references/agent.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md, skills/browser4-cli/references/agent.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "88 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 88,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"Cargo.lock",
"package-lock.json",
"pnpm-lock.yaml"
],
"has_dockerfile": true,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.44,
"toolchain_manifests": [
"browser4-agent-tools/pom.xml",
"browser4-agentic/pom.xml",
"browser4-apps/browser4-bundle/pom.xml",
"browser4-apps/browser4-standalone/pom.xml",
"browser4-apps/pom.xml",
"browser4-boot/pom.xml",
"browser4-core/browser4-browser/pom.xml",
"browser4-core/browser4-common/pom.xml",
"browser4-core/browser4-plugins/browser4-parse/pom.xml",
"browser4-core/browser4-plugins/browser4-protocol/pom.xml",
"browser4-core/browser4-plugins/pom.xml",
"browser4-core/browser4-resources/pom.xml",
"browser4-core/browser4-skeleton/pom.xml",
"browser4-core/pom.xml",
"browser4-dependencies/pom.xml",
"browser4-rest/pom.xml",
"browser4-tests/browser4-rest-tests/pom.xml",
"browser4-tests/browser4-tests-common/pom.xml",
"browser4-tests/pom.xml",
"browser4-tests/pulsar-e2e-tests/pom.xml",
"browser4-tests/pulsar-it-tests/pom.xml",
"cli/browser4-cli/Cargo.toml",
"examples/browser4-examples/pom.xml",
"examples/pom.xml",
"pom.xml"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "browser4-agent-tools/pom.xml, browser4-agentic/pom.xml, browser4-apps/browser4-bundle/pom.xml (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "browser4-agent-tools/pom.xml, browser4-agentic/pom.xml, browser4-apps/browser4-bundle/pom.xml"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".eslintrc",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Kotlin (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Kotlin"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "44 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 44,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 98,
"inputs": {
"primary_language": "Kotlin",
"largest_source_bytes": 1073878,
"source_files_sampled": 809,
"oversized_source_files": 30
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Kotlin (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Kotlin"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "30/809 source files over 60KB",
"points": 53,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 809,
"oversized": 30
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "moderate",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"example_dirs": [
"examples",
"sample"
],
"has_mcp_signal": true,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 20,
"status": "met",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "examples, sample",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "examples, sample"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"Could not fetch maven package 'ai.platon.pulsar:browser4-boot' from its registry",
"Could not fetch maven package 'ai.platon.pulsar:browser4-rest' from its registry",
"Could not fetch maven package 'ai.platon.pulsar:browser4-agentic' from its registry",
"Could not fetch maven package 'ai.platon.pulsar:browser4-agent-tools' from its registry"
],
"report_type": "repository",
"generated_at": "2026-07-25T14:21:52.502350Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/p/platonai/Browser4.svg",
"full_name": "platonai/Browser4",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}