{"_id":"@companion-ai/alpha-hub","_rev":"8-8dcb08c06fee96a2b8d22928eabea0ed","name":"@companion-ai/alpha-hub","dist-tags":{"latest":"0.1.6"},"versions":{"0.1.0":{"name":"@companion-ai/alpha-hub","version":"0.1.0","keywords":["research","papers","annotations","alphaxiv","mcp","cli"],"license":"MIT","_id":"@companion-ai/alpha-hub@0.1.0","maintainers":[{"name":"advaitpaliwal","email":"advait@companion.ai"},{"name":"harivanshrathi123","email":"hari@companion.ai"}],"homepage":"https://github.com/getcompanion-ai/alpha-hub#readme","bugs":{"url":"https://github.com/getcompanion-ai/alpha-hub/issues"},"bin":{"alpha":"bin/alpha","alpha-mcp":"bin/alpha-mcp"},"dist":{"shasum":"720992b31da7ba787950429694d6876216f9c80e","tarball":"https://registry.npmjs.org/@companion-ai/alpha-hub/-/alpha-hub-0.1.0.tgz","fileCount":21,"integrity":"sha512-SvnTw8hFlim95jmQzndiXnJNdHmZ18Eorw44bmI91c/nke8bWAS7HCVJ7c1KzvyV/zvCJ6L4mejldD6khZ1GSw==","signatures":[{"sig":"MEQCIFyHXZhzoN+UqyrmcWpJy6vMogoYPjNSQ/R4NO6E8h67AiBpnJIxyT8G7rZnYl9i4QOOZoHwrYWxG+zR1SkIlZ6csg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36782},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./lib":{"types":"./src/lib/index.d.ts","default":"./src/lib/index.js"},"./lib/papers":"./src/lib/papers.js","./lib/alphaxiv":"./src/lib/alphaxiv.js","./lib/annotations":"./src/lib/annotations.js"},"gitHead":"9a708a1ab96b76fa1167497b68d31fb81fd514b8","_npmUser":{"name":"advaitpaliwal","email":"advait@companion.ai"},"repository":{"url":"git+https://github.com/getcompanion-ai/alpha-hub.git","type":"git","directory":"cli"},"_npmVersion":"11.1.0","description":"Unofficial alphaXiv-powered CLI and library for research agents","directories":{},"_nodeVersion":"20.17.0","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/alpha-hub_0.1.0_1774029370757_0.5202579538174028","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@companion-ai/alpha-hub","version":"0.1.1","keywords":["research","papers","annotations","alphaxiv","mcp","cli"],"license":"MIT","_id":"@companion-ai/alpha-hub@0.1.1","maintainers":[{"name":"advaitpaliwal","email":"advait@companion.ai"},{"name":"harivanshrathi123","email":"hari@companion.ai"}],"homepage":"https://github.com/getcompanion-ai/alpha-hub#readme","bugs":{"url":"https://github.com/getcompanion-ai/alpha-hub/issues"},"bin":{"alpha":"bin/alpha","alpha-mcp":"bin/alpha-mcp"},"dist":{"shasum":"ac5f0441f2f9838724e0ef392577f2e7c04cbcab","tarball":"https://registry.npmjs.org/@companion-ai/alpha-hub/-/alpha-hub-0.1.1.tgz","fileCount":22,"integrity":"sha512-xsaZh/JIOeYf66HajPWoiMHynunOt7eshi4mPXt450OqgiJ2Hu9SOSwBVA7eMSzf/KYWCDBpydISauXSwpHvOQ==","signatures":[{"sig":"MEUCIHLWQNPxv42zg2GBRL/+90fdoGtccbnvBQoP99ayjsUCAiEArSbeSvzHwElriuihRh9Jp5W9BDHGUThKzkdTHqcNszk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37696},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./lib":{"types":"./src/lib/index.d.ts","default":"./src/lib/index.js"},"./lib/auth":{"types":"./src/lib/auth.d.ts","default":"./src/lib/auth.js"},"./lib/papers":"./src/lib/papers.js","./lib/alphaxiv":"./src/lib/alphaxiv.js","./lib/annotations":"./src/lib/annotations.js"},"gitHead":"9a708a1ab96b76fa1167497b68d31fb81fd514b8","_npmUser":{"name":"advaitpaliwal","email":"advait@companion.ai"},"repository":{"url":"git+https://github.com/getcompanion-ai/alpha-hub.git","type":"git","directory":"cli"},"_npmVersion":"11.1.0","description":"Unofficial alphaXiv-powered CLI and library for research agents","directories":{},"_nodeVersion":"20.17.0","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/alpha-hub_0.1.1_1774030191783_0.1130920995606568","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@companion-ai/alpha-hub","version":"0.1.2","keywords":["research","papers","annotations","alphaxiv","mcp","cli"],"license":"MIT","_id":"@companion-ai/alpha-hub@0.1.2","maintainers":[{"name":"advaitpaliwal","email":"advait@companion.ai"},{"name":"harivanshrathi123","email":"hari@companion.ai"}],"homepage":"https://github.com/getcompanion-ai/alpha-hub#readme","bugs":{"url":"https://github.com/getcompanion-ai/alpha-hub/issues"},"bin":{"alpha":"bin/alpha","alpha-mcp":"bin/alpha-mcp"},"dist":{"shasum":"31e0339b1c48d3008eda9df35846a563b9e19b28","tarball":"https://registry.npmjs.org/@companion-ai/alpha-hub/-/alpha-hub-0.1.2.tgz","fileCount":22,"integrity":"sha512-YAFh4B6loo7lKRjW3UFsdoiW3ZRvLdSdP7liDsHhCxY1dzfbxNU8vDAloodiK4ieDVRqMBTmG9NYbnsb4NZUGw==","signatures":[{"sig":"MEUCIEovysVUI52HeVt8yd+Bfz9NuAJw3NJXPBl5YZmFdyYrAiEAgGQiJ/d3QcguigE1NcOZ23FbodDmm+XTOlf+W5sF1Ds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40488},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./lib":{"types":"./src/lib/index.d.ts","default":"./src/lib/index.js"},"./lib/auth":{"types":"./src/lib/auth.d.ts","default":"./src/lib/auth.js"},"./lib/papers":"./src/lib/papers.js","./lib/alphaxiv":"./src/lib/alphaxiv.js","./lib/annotations":"./src/lib/annotations.js"},"gitHead":"9a708a1ab96b76fa1167497b68d31fb81fd514b8","_npmUser":{"name":"advaitpaliwal","email":"advait@companion.ai"},"repository":{"url":"git+https://github.com/getcompanion-ai/alpha-hub.git","type":"git","directory":"cli"},"_npmVersion":"11.1.0","description":"Unofficial alphaXiv-powered CLI and library for research agents","directories":{},"_nodeVersion":"20.17.0","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/alpha-hub_0.1.2_1774033233291_0.3760712611260171","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@companion-ai/alpha-hub","version":"0.1.3","keywords":["research","papers","annotations","alphaxiv","mcp","cli"],"license":"MIT","_id":"@companion-ai/alpha-hub@0.1.3","maintainers":[{"name":"advaitpaliwal","email":"advait@companion.ai"},{"name":"harivanshrathi123","email":"hari@companion.ai"}],"homepage":"https://github.com/getcompanion-ai/alpha-hub#readme","bugs":{"url":"https://github.com/getcompanion-ai/alpha-hub/issues"},"bin":{"alpha":"bin/alpha","alpha-mcp":"bin/alpha-mcp"},"dist":{"shasum":"edc9426d1c9507266ba9a7e157148a68779318fe","tarball":"https://registry.npmjs.org/@companion-ai/alpha-hub/-/alpha-hub-0.1.3.tgz","fileCount":22,"integrity":"sha512-g/JoqeGDCoSvkgs1ZSTYJhbTak0zVanQyoYOvf2tDgfqJ09gfkqmSGFDmiP4PkTn1bocPqywZIABgmv25x1uYA==","signatures":[{"sig":"MEYCIQCLn2kWoWzl1MTbu6DvYY/CWjoH/3tGYHCPJ9hg3019lgIhAKl4X7HNe/mPcPRHACiQwItf1VvB+0FEngaMknzP11pB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":45328},"type":"module","engines":{"node":">=18.0.0"},"exports":{".":"./src/index.js","./lib":{"types":"./src/lib/index.d.ts","default":"./src/lib/index.js"},"./lib/auth":{"types":"./src/lib/auth.d.ts","default":"./src/lib/auth.js"},"./lib/papers":"./src/lib/papers.js","./lib/alphaxiv":"./src/lib/alphaxiv.js","./lib/annotations":"./src/lib/annotations.js"},"gitHead":"01b1a770423862a9810d9797dfe61f8aa43259e1","_npmUser":{"name":"advaitpaliwal","email":"advait@companion.ai"},"repository":{"url":"git+https://github.com/getcompanion-ai/alpha-hub.git","type":"git","directory":"cli"},"_npmVersion":"11.9.0","description":"Unofficial alphaXiv-powered CLI and library for research agents","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"^3.23.0","chalk":"^5.3.0","commander":"^12.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/alpha-hub_0.1.3_1774462168107_0.16270991569017168","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@companion-ai/alpha-hub","version":"0.1.4","keywords":["research","papers","annotations","alphaxiv","mcp","cli"],"license":"MIT","_id":"@companion-ai/alpha-hub@0.1.4","maintainers":[{"name":"advaitpaliwal","email":"advait@companion.ai"}],"homepage":"https://github.com/Companion-Inc/alpha-hub#readme","bugs":{"url":"https://github.com/Companion-Inc/alpha-hub/issues"},"bin":{"alpha":"bin/alpha","alpha-mcp":"bin/alpha-mcp"},"dist":{"shasum":"1808ef41146a87079974d52dea02d57b0b0459d7","tarball":"https://registry.npmjs.org/@companion-ai/alpha-hub/-/alpha-hub-0.1.4.tgz","fileCount":22,"integrity":"sha512-l0A+7SGmuFkomLSYNWP/LD48i4gSrRL0m3uVSPLsjv3+j3HrrKkJZOUQ28jKFHzgIH1NthW1F8EjHpnZEusf+w==","signatures":[{"sig":"MEQCIEISpHRQxTd1G8tklR68uBqCOHN1GpaHFQiH6YdtqggyAiB9JuDRYCIfe+U3LD3zmyXgw8YNKd04Xhp9Rm7sF5sr/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFNMzgm3ATxYD0z3ABHG4UZmaFv0ZKywegXHYKSePugLAiEAqIQbbM0SOuDkW4GGnwSzNjMvGVIdbxNO12/o9woWetY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@companion-ai%2falpha-hub@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":51327},"type":"module","engines":{"node":">=22.22.0"},"exports":{".":"./src/index.js","./lib":{"types":"./src/lib/index.d.ts","default":"./src/lib/index.js"},"./lib/auth":{"types":"./src/lib/auth.d.ts","default":"./src/lib/auth.js"},"./lib/papers":"./src/lib/papers.js","./lib/alphaxiv":"./src/lib/alphaxiv.js","./lib/annotations":"./src/lib/annotations.js"},"gitHead":"9ef781f7db1059f04650a1ceec318763b915c7e2","_npmUser":{"name":"advaitpaliwal","email":"advait@companion.ai"},"overrides":{"qs":"6.16.0","hono":"4.13.7","fast-uri":"3.1.7","ip-address":"10.7.0","body-parser":"2.3.0","path-to-regexp":"8.4.2","@hono/node-server":"2.1.1","express-rate-limit":"8.7.0"},"repository":{"url":"git+https://github.com/Companion-Inc/alpha-hub.git","type":"git","directory":"cli"},"_npmVersion":"10.9.8","description":"Unofficial alphaXiv-powered CLI and library for research agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.5.4","chalk":"^6.0.0","commander":"^15.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/alpha-hub_0.1.4_1790141378892_0.5555572932870343","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@companion-ai/alpha-hub","version":"0.1.5","keywords":["research","papers","annotations","alphaxiv","mcp","cli"],"license":"MIT","_id":"@companion-ai/alpha-hub@0.1.5","maintainers":[{"name":"advaitpaliwal","email":"advait@companion.ai"}],"homepage":"https://github.com/Companion-Inc/alpha-hub#readme","bugs":{"url":"https://github.com/Companion-Inc/alpha-hub/issues"},"bin":{"alpha":"bin/alpha","alpha-mcp":"bin/alpha-mcp"},"dist":{"shasum":"a0a529a4bf4c8e21bcb6167866a24c399392867a","tarball":"https://registry.npmjs.org/@companion-ai/alpha-hub/-/alpha-hub-0.1.5.tgz","fileCount":22,"integrity":"sha512-Nvr7EkV2Sn3koPDWUE64vzx8H4vcZKNEyjf0oSIXu89iD1UYzlKoBYM6FqtNLUHp0vkM2eWuL1wmvMz6cd8atg==","signatures":[{"sig":"MEUCIDfHn2JWRC4xjhpfWUn0qEMn3lwlabl11dUZ8cRJW86xAiEA+bJiC45OLnXDN9AQz34+w2YcORdOAm/5IuZJeX0G8ik=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHSuCG2qMnFccaQfBbt1+aLrvc06YYL3f8RSaOsYZLOuAiB/d6SOXmTT/Kpp3QH0tgLHSUHY8Qj+S1Q42TlmWUc1VA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@companion-ai%2falpha-hub@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":55456},"type":"module","engines":{"node":">=22.22.0"},"exports":{".":"./src/index.js","./lib":{"types":"./src/lib/index.d.ts","default":"./src/lib/index.js"},"./lib/auth":{"types":"./src/lib/auth.d.ts","default":"./src/lib/auth.js"},"./lib/papers":"./src/lib/papers.js","./lib/alphaxiv":"./src/lib/alphaxiv.js","./lib/annotations":"./src/lib/annotations.js"},"gitHead":"d3911736ff52ff22c979ff8a727bec9ef1c4c8a9","_npmUser":{"name":"advaitpaliwal","email":"advait@companion.ai"},"repository":{"url":"git+https://github.com/Companion-Inc/alpha-hub.git","type":"git","directory":"cli"},"_npmVersion":"10.9.8","description":"Unofficial alphaXiv-powered CLI and library for research agents","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.6.5","chalk":"^6.0.0","commander":"^15.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/alpha-hub_0.1.5_1790151501443_0.21826077567516866","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"_id":"@companion-ai/alpha-hub@0.1.6","bin":{"alpha":"bin/alpha","alpha-mcp":"bin/alpha-mcp"},"bugs":{"url":"https://github.com/Companion-Inc/alpha-hub/issues"},"dist":{"shasum":"c819088ec03a471a68e9dfacea469a856413f35e","tarball":"https://registry.npmjs.org/@companion-ai/alpha-hub/-/alpha-hub-0.1.6.tgz","fileCount":22,"integrity":"sha512-6StaEHKCKofuFXDfKl+Hms/J0tIYo1e8AGf6PUMjpYWct04RkqFE/eqLmVgbDUJ6w5+HLe/0qnOJt0N9Oue4vA==","signatures":[{"sig":"MEUCIQCcJCsFIkGRY8UHkvFo0yDbbn9BrBsIf9K/TrD4TTrdyQIgWoaXoAE7Sh9gqKsy9v6HZw6fntzYzm00x84860LW6Pw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFsuTcxRKVXrWNdwPh11jo8PxqhSWkCvBpp5SdASFQxxAiEAsHVPNBV7e92yTlbchVueilgxnWnBgNZyc4LcrQ5Ntiw="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@companion-ai%2falpha-hub@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":60610},"name":"@companion-ai/alpha-hub","type":"module","engines":{"node":">=22.22.0"},"exports":{".":"./src/index.js","./lib":{"types":"./src/lib/index.d.ts","default":"./src/lib/index.js"},"./lib/auth":{"types":"./src/lib/auth.d.ts","default":"./src/lib/auth.js"},"./lib/papers":"./src/lib/papers.js","./lib/alphaxiv":"./src/lib/alphaxiv.js","./lib/annotations":"./src/lib/annotations.js"},"gitHead":"54ec9de42417d0d0adfbd42a42930324c49835a6","license":"MIT","version":"0.1.6","_npmUser":{"name":"advaitpaliwal","email":"advait@companion.ai"},"homepage":"https://github.com/Companion-Inc/alpha-hub#readme","keywords":["research","papers","annotations","alphaxiv","mcp","cli"],"repository":{"url":"git+https://github.com/Companion-Inc/alpha-hub.git","type":"git","directory":"cli"},"_npmVersion":"10.9.8","description":"Unofficial alphaXiv-powered CLI and library for research agents","directories":{},"maintainers":[{"name":"advaitpaliwal","email":"advait@companion.ai"}],"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.6.5","chalk":"^6.0.0","commander":"^15.0.0","@modelcontextprotocol/sdk":"^1.30.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/alpha-hub_0.1.6_1790155719023_0.8386925129705907"}}},"time":{"created":"2026-03-20T17:56:10.632Z","modified":"2026-09-23T09:28:39.445Z","0.1.0":"2026-03-20T17:56:10.914Z","0.1.1":"2026-03-20T18:09:51.972Z","0.1.2":"2026-03-20T19:00:33.457Z","0.1.3":"2026-03-25T18:09:28.260Z","0.1.4":"2026-09-23T05:29:38.974Z","0.1.5":"2026-09-23T08:18:21.519Z","0.1.6":"2026-09-23T09:28:39.112Z"},"bugs":{"url":"https://github.com/Companion-Inc/alpha-hub/issues"},"license":"MIT","homepage":"https://github.com/Companion-Inc/alpha-hub#readme","keywords":["research","papers","annotations","alphaxiv","mcp","cli"],"repository":{"url":"git+https://github.com/Companion-Inc/alpha-hub.git","type":"git","directory":"cli"},"description":"Unofficial alphaXiv-powered CLI and library for research agents","maintainers":[{"name":"advaitpaliwal","email":"advait@companion.ai"}],"readme":"# Alpha Hub\n\nUnofficial alphaXiv-powered CLI and library for research agents.\n\n## Install\n\nRequires Node.js **22.22.0 or newer**.\n\n```bash\nnpm install -g @companion-ai/alpha-hub\n```\n\nIf you installed the interim `@advaitpaliwal/alpha-hub` package, migrate once:\n\n```bash\nnpm uninstall -g @advaitpaliwal/alpha-hub\nnpm install -g @companion-ai/alpha-hub\n```\n\nThe commands remain `alpha` and `alpha-mcp`. Library consumers should use the `@companion-ai/alpha-hub` dependency and import scope; export paths such as `/lib` and `/lib/auth` are unchanged.\n\n## Quick Start\n\n```bash\nalpha login\nalpha status\nalpha search \"attention mechanism\"\nalpha get 1706.03762\nalpha ask 1706.03762 \"What datasets were used for evaluation?\"\nalpha code https://github.com/openai/gpt-2 /\n```\n\n`alpha login` opens a browser and waits for the redirect to `http://127.0.0.1:9876/callback`. On a remote server, over SSH, or in a container, open the printed URL in any browser. After you sign in, paste the address the browser ends on (`http://127.0.0.1:9876/callback?code=...`) into the waiting terminal.\n\n## Package Exports\n\nThis package exposes:\n\n- `alpha` CLI\n- `alpha-mcp` CLI (stdio MCP server)\n- library helpers from `@companion-ai/alpha-hub/lib` (`searchPapers`, `getPaper`, `askPaper`, annotations, auth), plus `/lib/auth`, `/lib/alphaxiv`, `/lib/papers`, and `/lib/annotations`\n\nSee the [repository README](https://github.com/Companion-Inc/alpha-hub#library) for the full export list.\n\n## 0.1.6\n\n- `alpha login` ignores a callback or pasted URL whose OAuth state is not this login's (it answers 400 and keeps waiting) instead of aborting. An `?error=` with the matching state still ends the login.\n- Token refreshes are shared within a process, so parallel requests no longer race refresh-token rotation. A refresh no longer overwrites `auth.json` if you logged out, or another process refreshed or logged in, while it was running.\n- An expired or revoked access token no longer fails alphaXiv calls. Previously, about an hour after login, long-running processes that kept one connection failed with `Streamable HTTP error: Error POSTing to endpoint: {\"error\":{\"message\":\"Invalid Authorization\"}}`, which was not recognized as an auth error. Now any call that gets this error refreshes the token once (shared with parallel calls), reconnects and retries once. If that fails, it reports `alphaXiv session expired. Run \\`alpha login\\` to sign in again.`\n- `alpha status` now checks the login with alphaXiv (`oauth2/userinfo`, trying one token refresh if the token is rejected). It exits 1 when not logged in, when the session has expired, or when alphaXiv cannot be reached. The library's `isLoggedIn()` still only checks for stored tokens. The new `verifyLogin()` in `/lib/auth` does the server check.\n- `auth.json` is replaced atomically: a new owner-only file is written next to it and renamed over it.\n\n## 0.1.5\n\n- `alpha login` accepts the pasted redirect URL when the browser cannot reach the local callback, for example on headless servers, SSH sessions, containers, and WSL. The OAuth state check still applies. On Linux without a display, `alpha login` no longer tries to open a browser. On WSL it tries `wslview` and then the Windows default browser. The login wait is now 5 minutes.\n- `~/.ahub/auth.json` is written with owner-only permissions.\n- `alpha get` and `alpha ask` accept alphaXiv-hosted paper IDs from search results, such as `2607.some-paper-title`. Search results give these papers `arxivUrl: null`.\n- If alphaXiv removes the `discover_papers` MCP tool, search falls back to alphaXiv's REST search.\n- `alpha search --mode both` and `--mode all` no longer hang after printing results, and no longer send duplicate requests. Library callers that ran searches in parallel also share one connection now.\n","readmeFilename":"README.md"}