Raw JSON report machine-readable
{
"data": {
"repo": {
"topics": [
"ai",
"ai-provider",
"ai-proxy",
"anthropic",
"claude",
"intisy-ai",
"llm",
"provider",
"typescript"
],
"is_fork": false,
"size_kb": 20818,
"has_wiki": true,
"homepage": null,
"languages": {
"Java": 240232,
"JavaScript": 9801,
"TypeScript": 66360
},
"pushed_at": "2026-07-29T05:45:57Z",
"created_at": "2026-06-18T14:41:47Z",
"owner_type": "Organization",
"updated_at": "2026-07-29T15:37:02Z",
"description": "Claude Code (Anthropic) provider for the intisy-ai AI-proxy ecosystem.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Java",
"significant_languages": [
"Java",
"TypeScript"
]
},
"owner": {
"blog": null,
"name": null,
"type": "Organization",
"login": "intisy-ai",
"company": null,
"location": null,
"followers": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/297198117?v=4",
"created_at": "2026-06-26T15:06:14Z",
"is_verified": null,
"public_repos": 30,
"account_age_days": 33
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "2.7.3",
"kind": "patch",
"published_at": "2026-07-21T11:25:53Z"
},
{
"tag": "2.7.2",
"kind": "patch",
"published_at": "2026-07-19T05:09:13Z"
},
{
"tag": "2.6.0",
"kind": "minor",
"published_at": "2026-07-18T18:53:09Z"
},
{
"tag": "2.5.0",
"kind": "minor",
"published_at": "2026-07-18T08:47:09Z"
},
{
"tag": "2.4.0",
"kind": "minor",
"published_at": "2026-07-17T19:01:37Z"
},
{
"tag": "2.3.0",
"kind": "minor",
"published_at": "2026-07-16T18:15:55Z"
}
],
"recent_commits": [
{
"oid": "2612fd28c90b062f3e0bf30dfde2512887c1c6c5",
"body": "…om drifting ahead)",
"is_bot": false,
"headline": "Merge release-merge history from main into experimental (keep main fr…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-29T05:45:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "724f0cb6e19d1ccbb7aa5f433f05abcf5a32e970",
"body": null,
"is_bot": false,
"headline": "refactor: use anthropic-translator submodule in the Java handle path",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-28T23:06:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "532c06c733b8ca80168c49bca693395842c6f19c",
"body": "…ped)",
"is_bot": false,
"headline": "ci: dual-name tokenless trusted publishing (unscoped + @intisy-ai sco…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-28T16:26:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab982f7de2bfcb4ed80257f027a3d7e2147dc92e",
"body": null,
"is_bot": false,
"headline": "feat: export provider def metadata for the dashboard",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-21T16:05:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f0aeade0a29af8026a67a4088943b2a922cd0f74",
"body": "…om backoff-math javadoc",
"is_bot": false,
"headline": "test: rename mergeBeta parity method + drop TS-handle-path framing fr…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-21T11:49:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2ca6aeb81acc87ffe44c22676584e63b18682513",
"body": null,
"is_bot": true,
"headline": "Automated merge from tag v2.7.3 into main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-21T11:24:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb3cec9034ce5f560949add3fddfb869c77827b1",
"body": "…rt/mirroring framing, README prose, user-facing message); sync message change across fixture + Java test",
"is_bot": false,
"headline": "docs: finish stripping archaeology + em dashes from comments (Java po…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-21T08:07:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8daf885b12436b2770acb2daa6725b9ffa069696",
"body": "@opencode-ai/plugin, proper-lockfile, xdg-basedir, zod, and\n@types/proper-lockfile are no longer imported anywhere in this repo\n(core-auth's account locking and config-dir resolution are hand-rolled\nnow); npm install confirms nothing pulls them in transitively either.",
"is_bot": false,
"headline": "chore: drop unused dependencies and fix description em dash",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-21T07:05:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a27109ca82e77ed74aeacc3cb482736dd597cf0a",
"body": "Remove task numbers (SP-N/T-codes), file:line back-references to\ndeleted TS sources, and history framing (\"used to\", \"the old X\",\n\"replaces the deleted Y\") from javadoc and comments across the Java\nprovider/TeaVM sources and the TS driver. Fix stray em dashes in\ncomments. No behavior change; handle-parity fixture and scenario\nnames untouched (full suite still green).",
"is_bot": false,
"headline": "chore: strip migration archaeology from comments (Java + TS)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-21T07:05:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c02581718a5a9d0b807e28a410a35345ec3d191",
"body": "…/) and untrack docs/",
"is_bot": false,
"headline": "chore: gitignore planning scratch (docs/, .superpowers/, graphify-out…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-21T06:05:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5099e6662c9d0c2b4de0b67d75d4d53e46c3075b",
"body": null,
"is_bot": true,
"headline": "Automated merge from tag v2.7.2 into main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-19T05:08:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2bdd85cce9cef96358681e5016ea3c9caa0db621",
"body": "…oxy/dist\n\nThe provider never builds core-proxy, so importing its HandleIrError broke clean-checkout builds\n(CI + fresh deploy). The front-door duck-types the error by its stable name marker, so a local copy\nis functionally identical and removes the build dependency. Test imports repointed to the local class.",
"is_bot": false,
"headline": "fix(build): define HandleIrError locally instead of importing core-pr…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-19T05:07:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "39c32672405af117b13eba9a2664b5bd97801db9",
"body": null,
"is_bot": true,
"headline": "Automated merge from tag v2.7.1 into main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-19T04:53:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18dc42ce80fd9903826325e03e2ba32d449adaa2",
"body": "…h jar/npm build works on Linux CI",
"is_bot": false,
"headline": "fix(ci): re-pin core-ir to a1fc174 (executable gradlew) so the Publis…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-19T04:53:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8c36f09e2effdc0dde6edfcb875452ae590b54ea",
"body": null,
"is_bot": true,
"headline": "Automated merge from tag v2.7.0 into main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-19T04:47:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c1708aea3faa380cf6ee2a97c2ca1f9392e964a4",
"body": "…s, T4)",
"is_bot": false,
"headline": "chore(core-auth): bump to 5057923 (drop dead legacy handle() fallback…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-19T03:41:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b80f8cfe84f3bba90390432d777a603cbecd8a0",
"body": "Remove the legacy app-wire handle() wrapper so the provider speaks only IR;\nthe front-door (core-proxy af99c16) owns app<->IR translation.\n\nTypeScript:\n- handler.ts: drop the handle export, keep handleIr/accounts/menu/menuModel\n- driver/index.ts: delete the handle() delegate and the driver.handle pr\n[…]\nto handleIr; remove the wire-URL-dispatch tests in ClaudeModelsFetchTest\n and ClaudeUsageFetchTest that have no IR analog\n\nSubmodule: bump core-proxy to af99c16 (handle() optional in the front-door).",
"is_bot": false,
"headline": "T4: make claude provider IR-native only (drop legacy app-wire handle)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-19T03:27:30Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "4a3ab1c922b186eece80a3c75390889815567d42",
"body": null,
"is_bot": false,
"headline": "chore(core-auth): bump to 6011176 (OpenCode native IR front-door, SP-4)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-19T02:58:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fe2493c74e3495f09edbb8c947d00f6ded3d0c51",
"body": "…delete HandleIrWireError\n\ncore-proxy main (bf56fc0 -> 011811c) added a typed transport-error contract for handleIr:\nHandleIrError (TS) and HandleIrException (Java), carrying status/headers/body/retryAfterMs so\nits front door (server.ts/Router.java) can reconstruct a real Response and run it through\n[…]\ntion.class.\n\nNo fixture bodies changed: behavior was already byte-identical, only the thrown class changed.\n30/30 vitest green (handle-parity suite included), 15/15 gradle claude-provider tests green.",
"is_bot": false,
"headline": "T3c-2: throw core-proxy's canonical HandleIrError/HandleIrException, …",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-19T02:18:05Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8da60826b56c94d75f38fabad4507e81344ad0d3",
"body": "Bumps core-ir (fee2bac -> a57bdd5, picks up the message_start/message_delta\nusage-object fix and the Gemini unknown-block fix) and core-proxy (9bc6a3c ->\nbf56fc0, which adds Provider#handleIr's default UnsupportedOperationException\nand RoutingProfile#translator on the Java side, and ProxyHandler.han\n[…]\nsts), core-ir/ir (30), core-proxy/routing (43), and\ncore-proxy/teavm (9), zero failures. claude-provider.jar verified to still\nship zero io.github.intisy.ai.ir classes (thin-jar discipline unchanged).",
"is_bot": false,
"headline": "SP-3 T2: add IR-native handleIr, coexisting with legacy handle()",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-19T01:14:48Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ff112d9ccad280953ebba2de26c9148264f6f6d3",
"body": "Add core-ir as a submodule (pinned to main@fee2bac) mirroring core-auth/core-proxy's\nwiring, and alias its :ir module into java/settings.gradle exactly like :routing/\n:teavm. claude-provider depends on :ir compileOnly (thin shipped jar, matching\n:routing's discipline -- ai-java does not host core-ir\n[…]\nt bodies -- key order changed via the IR round trip, never wire-significant;\nsnap/calls untouched). claude-provider.jar verified to still ship zero io.github.\nintisy.ai.ir classes (compileOnly holds).",
"is_bot": false,
"headline": "SP-2: migrate claude-code-auth's request prep through core-ir",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-18T23:39:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "541fa64c8f71e5ee77ca469d5263844dfe1c2e7d",
"body": null,
"is_bot": true,
"headline": "Automated merge from tag v2.6.0 into main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-18T18:51:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "26736c02d70a7053e9008d27a8633ca27283cf95",
"body": "…proxy)",
"is_bot": false,
"headline": "chore(claude-code-auth): bump core-auth to main 08c59bd (LP-3 opt-in …",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-18T18:49:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0e6abfb11730f3d2e2142104356a64dc01cc842e",
"body": null,
"is_bot": true,
"headline": "Automated merge from tag v2.5.0 into main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-18T08:46:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "45e5285b01ae199cc55b53da62ba38c6f12500eb",
"body": "…talog/Quota/OAuth), retire /v1/* handle() branches\n\nBumps the core-proxy submodule to 9bc6a3c (main lineage, E-A + the QuotaProvider\nAccountQuota amendment) so ConfigurableProvider/ModelCatalogProvider/QuotaProvider/\nOAuthProvider are importable, then migrates ClaudeProvider onto them:\n\n- ClaudeCon\n[…]\nlsFetchTest, ClaudeUsageFetchTest, ClaudeOAuthTest) plus new\nClaudeProviderTest coverage proving handle() no longer answers the retired\nURLs and that all four capability interfaces delegate correctly.",
"is_bot": false,
"headline": "feat(claude-provider): implement typed capability SPI (Config/ModelCa…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-18T08:22:36Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c4d9d2b6d381dd00423b1553545db60594cc413d",
"body": null,
"is_bot": true,
"headline": "Automated merge from tag v2.4.0 into main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-17T19:00:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4f7285b5e0ec309291b0d8b6157ed1b1f5954712",
"body": "…re); bump core-proxy\n\nClaudeBackend gains a store-taking ctor plus forStore/forCtx/store-keyed\nforTest/registerForTest seams; ClaudeProvider now resolves its backend via\nforCtx(ctx) at all six call-sites, preferring ctx.store when the host injects\none and only falling back to a self-assembled FileS\n[…]\n\n:routing sources win over the pinned githubCompileOnly ai-java 1.0.7 release,\nwhich bundles a stale pre-store-threading HandlerCtx that was shadowing the\nup-to-date one once ctx.store was referenced.",
"is_bot": false,
"headline": "feat(claude): serve from injected Store via HandlerCtx (forCtx/forSto…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-17T18:55:51Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "ca2fe1df09a1561b50a55c3a234229d64df22ea8",
"body": null,
"is_bot": false,
"headline": "feat(claude): real /v1/config (5 settings) with GET+PUT persistence",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-17T18:55:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "949e322af0d5997a5e1e7ee791a89dfcd420f8c6",
"body": "…identity, matches org asset)",
"is_bot": false,
"headline": "refactor(claude): rename provider id claude -> claude-code-auth (one …",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-17T18:55:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb7cc8429d1326f563f4fe58047bf53c05287638",
"body": "…provider-authorize, paste)\n\nPorts oauth.ts's authorizeClaude/encodeState/decodeState/exchangeClaude verbatim into a\nnew JVM-only ClaudeOAuth side-path, dispatched from ClaudeProvider.handle before the\nmessages orchestrator (same endsWith idiom as /v1/models and /v1/quota).",
"is_bot": false,
"headline": "feat(claude): /v1/config + /v1/oauth/authorize + /v1/oauth/exchange (…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-17T18:55:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9ce56bc17e3701fa5a447ba592cfc6da7d085fa9",
"body": "…orkflows)",
"is_bot": false,
"headline": "ci: remove sync-experimental-to-main (replaced by tag-gated promote w…",
"author_name": "Finn Birich",
"author_login": "intisy",
"committed_at": "2026-07-17T12:17:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "62524c9c9a41c974c7cd930d3fa97e4abbdff70c",
"body": null,
"is_bot": true,
"headline": "Automated merge from experimental to main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-17T12:16:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "47c1294ed528720028aa7f5c8c104cbaf2162c74",
"body": null,
"is_bot": false,
"headline": "ci: add tag-gated promote workflow (promote-main.yml)",
"author_name": "Finn Birich",
"author_login": "intisy",
"committed_at": "2026-07-17T12:16:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b3216c6ea01bb40198a53ad818bed336f8a9f09e",
"body": null,
"is_bot": false,
"headline": "ci: add tag-gated promote workflow (promote-experimental.yml)",
"author_name": "Finn Birich",
"author_login": "intisy",
"committed_at": "2026-07-17T12:16:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d7b509a8dd5362cfb6b828fe208c99dc4f605d3",
"body": null,
"is_bot": true,
"headline": "Automated merge from experimental to main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-16T18:10:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "61f4ebddfddfc1a958bbdf651d36c2377113cea1",
"body": null,
"is_bot": false,
"headline": "chore(claude): release v2.3.0",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T18:05:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "56cca4e3ec6351953cffad15d0297887223f5cde",
"body": "…strictly additive) + track main",
"is_bot": false,
"headline": "chore(claude): advance core-auth submodule fd30a7d -> main (098ecef, …",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T18:04:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12487e7d7d1a1cfb610caeae4f5b919d01101d7c",
"body": null,
"is_bot": false,
"headline": "fix(claude): mark java/gradlew executable (100755) for CI TeaVM build",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T18:03:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d04e3a4d24fb0075768ac8a4ec622cca501d7d7e",
"body": "…rseResetMs post-dedup",
"is_bot": false,
"headline": "refactor(claude): fix stale javaHandle comment + drop dead imports/pa…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T18:01:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "83b0749e2b12ee35494aa8c25d625ebe0b89f929",
"body": "…rator flag — Java is the single source\n\nJava path live-verified (real account round-trip 200 + no-account 400); 16-scenario regression frozen from the proven parity baseline.",
"is_bot": false,
"headline": "refactor(claude): delete duplicated TS handle loop + use_java_orchest…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T17:52:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7445bf43642df2c96b241d81068dc0e839377970",
"body": null,
"is_bot": false,
"headline": "docs: claude-code-auth TeaVM de-dup implementation plan",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T17:38:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6bd29590bea96139287521cd7117a9d5a056aa4",
"body": null,
"is_bot": false,
"headline": "docs: TeaVM de-dup claude-code-auth design spec",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T17:35:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e405d03702872d3f7409a3dcce803ae260cb325",
"body": null,
"is_bot": true,
"headline": "Automated merge from experimental to main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-16T15:09:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c994e99645bc6d805479c6c4f910b6af3e816228",
"body": "…er jar",
"is_bot": false,
"headline": "ci: unify publish workflow — one v* tag publishes npm plugin + provid…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T15:09:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a1f2c2ae91112445fe23f6045f4859d2f72dbc2",
"body": null,
"is_bot": true,
"headline": "Automated merge from experimental to main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-16T13:30:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dce3fb1bccba4ad9687adc17a0b468fe25b086c8",
"body": "…y (quota-display Task 1)\n\nMirrors the GET /v1/models discovery branch: ClaudeUsageFetch fetches\n/api/oauth/usage per enabled account, buckets limits via the existing\nClaudeQuotaParser helpers, and persists pools to meta.cachedQuota so the\ndashboard has a durable per-account quota cache. Never throws; a\nper-account failure folds into a {status:\"error\", quota:null} entry\nwithout aborting the overall 200 response.",
"is_bot": false,
"headline": "feat(claude-provider): serve GET /v1/quota for dashboard usage displa…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T13:30:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "652a12d2ac7fb04a4246ec1fdd668144f9a67fc7",
"body": null,
"is_bot": true,
"headline": "Automated merge from experimental to main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-16T11:14:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dea1d206174bae0e4a12e1b45d839d1d03e6b1b3",
"body": "…model-map Task 1)\n\nAdds ClaudeModelsFetch.fetch(): finds the first enabled claude account, calls\nAccountManager.ensureAccess (no rotation side-effects), fetches Anthropic's\nGET /v1/models?limit=1000 with the existing OAuth headers, and maps the result\nvia the already-ported ClaudeModelRouting.fetchModelsMapping. ClaudeProvider.handle()\nnow branches to it for GET .../v1/models before the unchanged messages/orchestrator path.",
"is_bot": false,
"headline": "feat(claude-provider): serve GET /v1/models for dashboard discovery (…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T11:14:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "79753ec41a069f5028aa1891d507039864579288",
"body": null,
"is_bot": true,
"headline": "Automated merge from experimental to main",
"author_name": "github-actions[bot]",
"author_login": "github-actions[bot]",
"committed_at": "2026-07-16T10:28:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8284755054f6b295e47af2c5c49b8ce285b1aa73",
"body": "…> main)",
"is_bot": false,
"headline": "ci: add sync-experimental-to-main workflow (auto-merge experimental -…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T10:28:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f617b5b029cb0d3860818a549b8838360180524b",
"body": "Replace the CI-unresolvable compileOnly \"io.github.intisy:jvm:0.1.0\" (only\nresolves through the local composite includeBuild) with githubCompileOnly\n\"intisy-ai:ai-java:1.0.7:standalone\", which pulls the published standalone\nfat asset (jvm.backend + shared.manager/model + shared.routing + gson) via\ngithub-gradle. Keeps the jar thin (compileOnly) and the local composite\npath intact for :test.",
"is_bot": false,
"headline": "fix(claude-provider): consume published ai-java 1.0.7 for CI publish",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T09:51:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea44fd58d4bbdeae7667cce769c7273dd7dcd46c",
"body": "- make the x-api-key stripping assertion real by seeding an inbound\n x-api-key header in the happy-path test\n- count only enabled accounts for maxAttempts, mirroring\n HostAccountOps.listEnabledCount()\n- tighten the rate-limit rotation test to assert the specific account\n that received the 429, not \"either account\"\n- use the java.util.Map import instead of an inline FQN in\n ClaudeHostSeams.captureQuota",
"is_bot": false,
"headline": "fix(claude-provider): address phase-6 review findings",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T08:47:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e2bc110709ab425e7ab5a5f06f3853d1eca2548",
"body": "Adds ClaudeProvider implements io.github.intisy.ai.shared.routing.Provider,\nself-assembling ClaudeBackend (AccountManager/AccountStore over the :jvm\nbackends), and the two host seams (AccountOps/AttemptExecutor) the already-\nported ClaudeHandleOrchestrator needs. Mirrors antigravity-auth's provider\n\n[…]\nsh scaffold (github-gradle plugin, includeBuild\nai-java for io.github.intisy:jvm, publishGithub scoped to :claude-provider)\nand a numeric-tag java publish workflow, mirroring antigravity-auth exactly.",
"is_bot": false,
"headline": "feat(claude-code-auth): Phase 6 JVM ClaudeProvider wiring",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-16T08:27:55Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "cfa67000c8a9a68976636b07798acc25b7523c51",
"body": "…-request harness assertion\n\nIMPORTANT-1: the Java-delegated handle path now applies the same exponential-backoff\ncooldown as the TS path when a 429/529 carries no reset header. ClaudeHandleOrchestrator\ncomputes Date.now()+min(defaultCooldown*1000*2^attempt, maxCooldown*1000) inline\n(byte-matching r\n[…]\n now-dependent branches are deterministic.\n\nNew scenarios (429/529 no-reset-header, doubling backoff) fail pre-fix, pass post-fix;\nJVM test added. Dormant: flag default OFF, handle OFF-path unchanged.",
"is_bot": false,
"headline": "fix(claude-code-auth): T6c2 rate-limit backoff parity + outbound wire…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-14T14:33:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c06b5780e3de000f3cea93a20cab23a809a51d23",
"body": "…n + parity harness (dormant)",
"is_bot": false,
"headline": "feat(claude-code-auth): flag-gated Java-orchestrator handle delegatio…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-14T14:07:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5efd7cd0cef44d0ae81e66784671a5142894f61e",
"body": "…o-@Async composition proof (node)",
"is_bot": false,
"headline": "feat(claude-code-auth): async JS bridges for handle orchestrator + tw…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-14T13:35:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f751d094b5b33b683c4d903cf6924d4ca9073cb1",
"body": "…rity-tested)\n\nAdds ClaudeHandleOrchestrator (the handle retry-loop/status-branching/account\nrotation state machine) and ClaudeModelRouting (isRateLimitStatus,\nresolveAutoModel, applyAssignedModel, fetchModelsMapping) to :claude-provider,\nalongside T6a's AnthropicRequestTranslator/ClaudeQuotaParser.\n[…]\n's method. Extends :claude-teavm's ClaudeProviderJs to exercise\nthe new classes, proving generateJavaScript stays green.\n\n87/87 :claude-provider tests pass; TS build+vitest unaffected; src/ untouched.",
"is_bot": false,
"headline": "feat(claude-code-auth): java handle orchestrator (host-driven I/O, pa…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-14T13:05:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "205f1cd2f251702f620d3d5d3e9efb952ed7b9e7",
"body": "…-parser (parity-tested)\n\nScaffolds claude-code-auth's Java module (core-proxy submodule for the JsonCodec\nSPI, Gradle build aliasing core-proxy's :routing/:teavm, a :claude-teavm TeaVM\ntarget) and ports the two safest pure-logic pieces of the TS driver:\n\n- AnthropicRequestTranslator <- src/plugin/r\n[…]\n TeaVM-transpilable. Bucket B (handle/fetch/quota-refresh) and Bucket C\n(login/TUI/opencode-merge) are untouched. claude-code-auth's TS build + vitest\nremain green -- additive only, no live-cc impact.",
"is_bot": false,
"headline": "feat(claude-code-auth): java module + port request-translator & quota…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-14T11:59:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a8748d958ac5ad5dfafd23b885719c9b1f377fac",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth -> fd30a7d (sticky-at-cap fix)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-11T13:51:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e4ff28e472c078b1a9b1e87fbfc95982caa7ff2",
"body": "…tic); pass providerId to proxy selection; bump core-auth",
"is_bot": false,
"headline": "feat(proxy): report ipSuspected on rate-limit (quota-remaining heuris…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-11T13:37:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5461755dc65b4041605565446ec2794e17323e13",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth -> b3c491f (Resets fallback line)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-11T07:41:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad16248c94c8e0726fa50308679129fd989f0771",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth -> 58ea163 (core Refresh quota action)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-11T07:19:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2d350ec2152e7fc85950e09447253d753361d523",
"body": "…list incl. per-model weekly buckets like Fable); header capture merges instead of replacing",
"is_bot": false,
"headline": "feat(quota): fetch pools from the OAuth usage endpoint (full dynamic …",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-10T23:14:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a580d7789b2523dfe8cc91c45ca2548de9cb9e5c",
"body": "…n split, leaderboard score source)",
"is_bot": false,
"headline": "chore: bump core-auth -> 5e5aeed (in-tab confirm menus, disabledReaso…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-10T22:28:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f14435014c6fa2722d4441a4ccb800dae3fa9daa",
"body": "… pools like a Fable weekly bucket appear automatically); disabledReason instead of cooldownReason for system-disables; verifyAll skips disabled accounts",
"is_bot": false,
"headline": "feat: discover unified rate-limit pools dynamically from headers (new…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-10T22:19:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6375b45a1ac537ddc95ec37c9af80abedfa6feb8",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth -> e1ce8b4",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-08T19:25:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "42472782f0695f23a1eb10a242acb1af4b9863b1",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth -> aa09bba",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-08T18:39:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "53b9e9f8d651d0c6bcf71930de10f3d4b6119825",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth -> 8bf3e6f",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-08T16:40:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a168b4fceea4cba9c082086daacc1e8ecaa8f16e",
"body": "…edback); drop declared static models",
"is_bot": false,
"headline": "chore: bump core-auth -> 73eac04 (Refresh gated on accounts; flash fe…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-08T15:34:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "93fe41d20f3d2275729e9eeb6b8fc58a97214704",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth -> d16bb57 (ignore stale static model cache)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-08T15:18:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b523d7dcecd20ae71b13ef356fe0be0b54ab22cb",
"body": "… only; empty better than stale); bump core-auth -> 1e55875",
"is_bot": false,
"headline": "refactor(models): drop hardcoded static Claude model list (live fetch…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-08T14:57:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b856f4c088eaf486adbf0d85fcb230582fe04674",
"body": "…ta gated on accounts)",
"is_bot": false,
"headline": "chore: bump core-auth -> 85c6e51 (models browsable without login; Quo…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-08T14:38:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6719e56c410e0e774bfe2efb04baf3f7a932b809",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth -> 560365a (Manage hint drops 'models')",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-08T14:13:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f30305280376b7a2a97f38a02add6ae13b266831",
"body": "…ot stuck loading)",
"is_bot": false,
"headline": "chore: bump core-auth -> a35a8e8 (quota shows \"No enabled accounts\" n…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T19:47:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a9833f58d89f7f352912ac251d05e9ba6608ac98",
"body": "… loop)\n\nacquire() returning null previously always returned 503, which Claude Code treats as\ntransient and retries \"attempt N/10\". When there are ZERO enabled accounts (all\ndisabled / logged out) retrying can never help, so return a terminal chatError(400)\n— Claude stops on a 4xx. If accounts merely cooling down, keep the retryable 503.",
"is_bot": false,
"headline": "fix: terminal 400 when no Claude account is available (stop the retry…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T19:36:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f51b27d107f152cf7345c0b086bc5a276d4ee007",
"body": "Adds a \"Refresh quota\" action to each account (pings max_tokens:1 and captures the\n5h/7d pools for just that account), alongside Verify access / Refresh token.",
"is_bot": false,
"headline": "feat: per-account \"Refresh quota\" action",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T19:20:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "30326aceefb65ca1960c772357f4a0b57dedf762",
"body": "A 403 on /v1/messages means the OAuth token is fundamentally broken (wrong scopes /\nconsole-host token), not a rate limit. The handler now disables the account and sets\ncooldownReason \"re-login required\" then rotates to the next, instead of surfacing a\nraw 403; verify() does the same. The accounts view shows the reason so a broken\naccount reads as \"[disabled] · re-login required\" rather than \"[active] available\".",
"is_bot": false,
"headline": "fix: auto-disable broken (403 scope) accounts + flag for re-login",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T18:54:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b37078cf0f9426436371c4342848cad6872ea2c",
"body": "…imit UI)\n\nReverts the terminal chatError on all-accounts-exhausted: pass the real Anthropic\n429 (with anthropic-ratelimit-unified-* headers) back so Claude Code renders its\nown native \"session/usage limit — resets X\" message instead of a raw\n\"API Error: 400 …\". The loader proxy detects the 429 for fallback and normalizes\nother providers into this same native shape.",
"is_bot": false,
"headline": "fix: return the real upstream 429 on exhaustion (native Claude rate-l…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T18:31:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2e153198aaae3c9b9e7d1cd929c75f7e2ba6bcfc",
"body": "…ion error\n\n- Capture Anthropic unified rate-limit headers (5-hour + 7-day utilization/reset/\n status) from every response into account.cachedQuota; expose via the accounts\n controller as quota pools (remainingFraction = 1 - utilization) so the Quota view\n shows real usage. refreshQuota pings max\n[…]\n fall back to another model, or surface a consistent\n \"All Claude accounts are rate-limited — try again in ~Xm\" instead of a raw 429.\n- Bump core-auth -> 9e3400f (source badge + rate-limited marker).",
"is_bot": false,
"headline": "feat: claude-code quota pools (5h/7d) + consistent rate-limit exhaust…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T17:49:58Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "c477bf02a747ace0d562f389963a254038af652d",
"body": "/v1/messages returned 403 \"OAuth token does not meet scope requirement\n(user:inference…)\" for Max accounts because we authorized on\nplatform.claude.com/oauth/authorize — the Console surface, which mints an\nAPI-key-mode token with no subscription inference entitlement. Pro/Max inference\ntokens come f\n[…]\nthe claude.ai authorize host; the host is the determinant, not\nthe scope. Token exchange + callback stay on platform.claude.com. Requires a fresh\nre-login (old tokens were minted by the console host).",
"is_bot": false,
"headline": "fix: authorize subscription login on claude.ai (not platform.claude.com)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T17:30:22Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8630ec408ffd2864d9a9ef9a3a5a95ef3e1f6a06",
"body": "…k + probe)\n\nLog anthropic-ratelimit-* / retry-after from each response so we can design the\nclaude-code quota pool view around the real header schema (unlike antigravity, the\nsubscription API may not expose a usage fraction — this reveals what it does return).",
"is_bot": false,
"headline": "feat: capture claude subscription rate-limit headers (quota groundwor…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T15:27:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c1aef538c34d85fd1c5ad275b47ca3a757b96fa",
"body": "…odels section)",
"is_bot": false,
"headline": "chore: bump core-auth -> adef602 (Browse-models menu + consolidated M…",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T14:03:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bcb42610f26ea5f37e193e724f218bbe9bc2d14b",
"body": "feat: dynamic claude-code model catalog via /v1/models; current static fallback\n\n- driver.fetchModels() pulls the account's live models from Anthropic\n /v1/models (OAuth Bearer + oauth beta) so \"Refresh models\" and login\n actually update the list; core-auth resolveProviderModels calls it when an\n \n[…]\n) from\n the stale 4.6 ids to the current lineup: Opus 4.8 / Sonnet 5 / Haiku 4.5.\n- Bump core-auth submodule -> 5af673d (disabled-account Infinity fix +\n model list surfaced on the provider menu).\n@",
"is_bot": false,
"headline": "@",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T13:25:11Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "bf970fb03c8f56744ee2dc3ecb8b4bb85e46f7b4",
"body": "Replace hand-rolled preferredPath/readJson/getSetting/setSetting with core\ngetConfigValue/setConfigValue (config/claude-code.json). Signatures + typed\ngetters unchanged; driver untouched. Contract tests pass.",
"is_bot": false,
"headline": "refactor(config): back driver settings with core config",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T10:29:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2684eca65b6654503db92d5ea0785ee6bd8fbbcc",
"body": null,
"is_bot": false,
"headline": "chore: bump core/* submodules for unified config-dir resolution",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-07T10:05:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f53dd6348b594622ad16f1f76120da5951dc0fc9",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth (format-aware chatError)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-03T19:30:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04b1a5c10861a4caab7455a75a83bfcb7c967ede",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth (chatError plain 400)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-03T19:20:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c42a205ec9afdda155346ce6f629d354bf79409",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth (chatError SSE)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-03T19:08:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3de8938bac43e955fd12cd232228d0d81099dac",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth (chatError API)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-03T18:21:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "30a14ccff08c738f61e67804bec804f3e14aaf8b",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth (opencode toast body fix)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-03T17:48:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ba4ea5a6fdefbf11eb10f2928110f825c24d08e7",
"body": null,
"is_bot": false,
"headline": "feat: bump core-auth (notify API)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-03T14:38:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f70f7f36828bad33c9583e6216b6735560ed6c3",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth (categorized account menu)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-03T00:24:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d96ab4ff983ed02353120e56ac90ea3522072d4b",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth (slim account menu)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-03T00:05:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "674bc8bb2aec2fe44287b514d3cbcc4e7f43cce8",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth (quota auto-fetch + graceful states)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-02T23:46:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3518fefb49cc3fd1fd9a43be66de03bf221de8dd",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth (Accounts heading one-liner)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-02T23:19:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "87c5e22b511c6e953384bab0e0b36065e954c495",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth (account menu usage bars + availability note)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-02T22:55:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51cdaadfedccbb2509f51812308614bb33f64d9f",
"body": null,
"is_bot": false,
"headline": "chore: bump core-auth (account availability/quota in menu)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-02T21:58:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7270689de7044f157cc04c99bcb8731cb2d7640a",
"body": "Node's undici throws \"Request with GET/HEAD method cannot have body\" when a\nbody (even an empty string) is attached to a GET/HEAD request; Bun tolerated it.\nThe proxy stayed up but every forwarded GET/HEAD failed. Drop the body for those\nmethods in prepareClaudeRequest so the forwarding fetch (and its direct-retry,\nwhich reuses this init) is valid.",
"is_bot": false,
"headline": "fix: omit request body on GET/HEAD forwards",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-02T09:01:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d389256232f7097226fab3c98e92a93edc3b7451",
"body": "README now generated by the central core generator; advance core submodule to 659ce90.",
"is_bot": false,
"headline": "chore(release): v2.2.1",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-01T13:57:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "637ff8e26421b338d4f52e88dd59bb4935c4373b",
"body": "- Advance core submodule to 3f87378 (readme generator)\n- Add defineReadme spec + maybeRunReadmeCli guard in src/index.ts\n- Add postbuild script to regenerate README.md on every build\n- Add git diff --exit-code CI drift-check in publish.yml\n- Add readme: true to contract test\n- Fix contract configName: \"claude-code-auth\" → \"claude-code\" (pre-existing mismatch)",
"is_bot": false,
"headline": "docs: generate README from central generator (defineReadme)",
"author_name": "intisy (Finn Birich)",
"author_login": "intisy",
"committed_at": "2026-07-01T13:48:11Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 6,
"commits_last_year": 154,
"latest_release_at": "2026-07-21T11:25:53Z",
"latest_release_tag": "2.7.3",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 8,
"days_since_latest_release": 8,
"mean_days_between_releases": 0.9
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 37,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "claude-code-auth",
"exists": true,
"license": "MIT",
"keywords": [
"opencode",
"claude",
"claude-code",
"anthropic",
"oauth",
"subscription",
"provider",
"auth"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/claude-code-auth",
"is_deprecated": false,
"latest_version": "2.7.3",
"repository_url": "https://github.com/intisy-ai/claude-code-auth",
"versions_count": 19,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 2815,
"first_published_at": "2026-06-03T05:57:19.756000Z",
"latest_published_at": "2026-07-21T11:25:50.812000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 8
}
]
},
"popularity": {
"forks": 0,
"stars": 1,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"tsconfig.json"
],
"toolchain_manifests": [
"java/build.gradle",
"java/claude-provider/build.gradle",
"java/claude-teavm/build.gradle"
],
"largest_source_bytes": 19062,
"source_files_sampled": 46,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"java/build.gradle",
"package.json"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 4,
"malicious_count": 0,
"assessed_package": "npm:claude-code-auth@2.7.3",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"maven",
"npm"
],
"dependencies": [
{
"name": "@openauthjs/openauth",
"manifest": "package.json",
"ecosystem": "npm",
"version_constraint": "^0.4.3"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 0,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 0
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "intisy",
"commits": 142,
"avatar_url": "https://avatars.githubusercontent.com/u/105643708?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"promote-experimental.yml",
"promote-main.yml",
"publish.yml"
],
"has_docs_dir": false,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"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": 10,
"reason": "project has 4 contributing companies or organizations",
"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": 0,
"reason": "no 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": 0,
"reason": "project was created within the last 90 days. Please review its contents carefully",
"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": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"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": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "2612fd28c90b062f3e0bf30dfde2512887c1c6c5",
"ran_at": "2026-07-29T17:02:25Z",
"aggregate_score": 3.3,
"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": null,
"oldest_open_prs": [],
"last_merged_pr_at": null,
"ci_last_conclusion": null,
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/intisy-ai/claude-code-auth",
"host": "github.com",
"name": "claude-code-auth",
"owner": "intisy-ai"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"security": 46,
"vitality": 72,
"community": 32,
"governance": 37,
"engineering": 60
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 72,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"commits_last_year": 154,
"human_commit_share": 0.87,
"days_since_last_push": 0,
"active_weeks_last_year": 8
},
"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": "8/52 weeks with commits",
"points": 5.5,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 8
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "154 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 154
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 6,
"latest_release_tag": "2.7.3",
"releases_from_tags": false,
"days_since_latest_release": 8,
"mean_days_between_releases": 0.9
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "6 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 6
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 8 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 8
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~0.9 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 0.9
}
}
],
"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": "unverified",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": "repository_too_young",
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": null,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "maintenance record not established from the collected data",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_unverified",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 32,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 1,
"inputs": {
"forks": 0,
"stars": 1,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "1 stars",
"points": 0,
"status": "missed",
"details": [
{
"code": "stars",
"params": {
"count": 1
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"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 (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"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": 58,
"inputs": {
"packages": [
"claude-code-auth"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 2815
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "2,815 downloads/month across npm",
"points": 46,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 2815,
"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": "at_risk",
"name": "Sustainability & Governance",
"value": 37,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 20,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"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 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 4 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "critical",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution, PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution",
"pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 1,
"inputs": {
"merged_prs": 0,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 0
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "no decided pull requests or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_decided_prs_or_data",
"params": {}
}
],
"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": "at_risk",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 43,
"inputs": {
"followers": 1,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "intisy-ai",
"public_repos": 30,
"account_age_days": 33
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "1 followers of intisy-ai",
"points": 2.2,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 1,
"login": "intisy-ai"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "30 public repos, account ~0 yr old",
"points": 11,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 30
}
},
{
"code": "account_age_years",
"params": {
"years": 0
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"claude-code-auth"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 8
},
"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 8 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 8
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "19 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 19
}
}
],
"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": "moderate",
"name": "Engineering Quality",
"value": 60,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "moderate",
"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": 60,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "3 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 3
}
}
],
"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": null,
"points": 0,
"status": "missed",
"details": [],
"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": 0,
"status": "missed",
"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": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"topics": [
"ai",
"ai-provider",
"ai-proxy",
"anthropic",
"claude",
"intisy-ai",
"llm",
"provider",
"typescript"
],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": false,
"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": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"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": "9 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 9
}
}
],
"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": 46,
"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": 33,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"scorecard_aggregate": 3.3
},
"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 4 contributing companies or organizations",
"points": 2.5,
"status": "met",
"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": "no update tool detected",
"points": 0,
"status": "missed",
"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": "project was created within the last 90 days. Please review its contents carefully",
"points": 0,
"status": "missed",
"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 0",
"points": 0,
"status": "missed",
"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": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:claude-code-auth@2.7.3 runtime dependency closure — what installing the published package pulls in — 4 packages. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_published",
"params": {
"package": "npm:claude-code-auth@2.7.3",
"assessed": 4
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 4,
"unassessed_packages": 0,
"affected_by_severity": "none",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "no indirect dependency carries a known advisory",
"points": 25,
"status": "met",
"details": [
{
"code": "no_indirect_advisories",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"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": 4,
"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": 1
},
"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": "moderate",
"name": "AI Readiness",
"value": 53,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.989,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"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": "86 of 87 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 86,
"sampled": 87
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 46,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [
"tsconfig.json"
],
"agent_commit_share": 0,
"toolchain_manifests": [
"java/build.gradle",
"java/claude-provider/build.gradle",
"java/claude-teavm/build.gradle"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "java/build.gradle, java/claude-provider/build.gradle, java/claude-teavm/build.gradle (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "java/build.gradle, java/claude-provider/build.gradle, java/claude-teavm/build.gradle"
}
}
],
"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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"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 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Java",
"largest_source_bytes": 19062,
"source_files_sampled": 46,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Java (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Java"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/46 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 46,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"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",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-29T17:02:31.227753Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/i/intisy-ai/claude-code-auth.svg",
"full_name": "intisy-ai/claude-code-auth",
"license_state": "standard",
"license_spdx": "MIT"
}